SSH 通过多个主机作为socks 代理

Séb*_*ien 27 ssh proxy socks-proxy ssh-tunnel socks

可以通过 SSH 实现以下功能吗?

涉及到三台机器:

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B
Run Code Online (Sandbox Code Playgroud)

我想设置一个 SOCKS 代理。我希望能够在家里的本地计算机上冲浪,就像我在实验室一样。这是由于某些站点只能从学校的公共 IP 访问。

所以我想在主机 C 上运行一个 SOCKS 代理。但我没有设法让它在主机 A 上工作。

我连接到网关,然后从网关连接到工作站。但是我无法让网关正确地将流量从代理传输到代理。

我怎样才能做到这一点?

use*_*686 35

三种略有不同的方法。(用您选择的端口号替换 $PORTX 和 $PORTY。)

第一种方法:ProxyCommand

machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c
Run Code Online (Sandbox Code Playgroud)

第二种方法:

  1. 连接从A到B,以“本地转发”$PORT来。localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从 B 连接到 C,启用“动态转发”。

    machine-b$ ssh -f -N -D $PORT machine-c
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将您的浏览器配置为在 使用代理。localhost:$PORT

步骤 #1 和 #2 可以总结为:

ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"
Run Code Online (Sandbox Code Playgroud)

第三种方法:

  1. 连接从A到B,以“本地转发”$PORTXmachine-c:22

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过隧道从 A 连接到 C,使用“动态转发”。

    machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
    
    Run Code Online (Sandbox Code Playgroud)

    -f -N如果您也想对交互式连接使用相同的隧道,则可以省略。)

  3. 将您的浏览器配置为在 使用代理。localhost:$PORTY

  • 太棒了,谢谢!我希望我能给一个额外的 +1 使它成为一个班轮! (2认同)

归档时间:

查看次数:

19468 次

最近记录:

7 年 前