我看到过有关通过多台机器建立 SSH 隧道的问题,但我想建立 SOCKS 连接隧道。
通常我会使用类似的ssh -C2qTnN -D 8080 username@remote_machine
方法使本地端口 8080 成为通过远程计算机的 SOCKS 隧道。我想从 machine2 上的笔记本电脑打开一个袜子连接,该连接只能从 machine1 通过 SSH 访问。
因此,我想我希望在 machine1 上运行该命令,以便将本地端口 8080 重定向到 machine2,并以某种方式将 machine1 上的 8080 通过管道返回到笔记本电脑上的本地端口,而不是正常意义上的隧道 SSH 连接。
答案1
所以,如果我理解正确的话,你可以从机器 1 ssh 到机器 2,但不能从你的笔记本电脑(你可以从笔记本电脑 ssh 到机器 1)。您想在机器 1 上安装一个袜子服务器并从您的笔记本电脑上使用它吗?所以看起来您所需要的只是在笔记本电脑上运行 8080: 端口转发:
ssh -nL 8080:localhost:8080 machine1 ssh -C2qnN -D 8080 username@machine2
答案2
这个问题的 2018+ 答案将是RemoteCommand
选项中指定~/.ssh/config
。
Host proxy
Hostname ma.ch.in.e1
RemoteCommand ssh -C2qnN -D 8080 username@machine2
LocalForward 8080 localhost:8080
这需要OpenSSH 7.6从 11/2017 或之后。之前的版本需要使用@StéphaneChazelas 的答案。
如果您还想machine1
在不启动代理的情况下进行连接,只需添加一个别名,例如m1
:
Host m1
Hostname ma.ch.in.e1