Answers:
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'
然后,您可以简单地运行ssh PC1
。
最好通过使用别名~/.ssh/config
:
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101
对于没有-W
选项的较旧版本的OpenSSH (我认为这意味着≤5.4),请确保PC2上可以使用netcat并使用
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p
使用SSH有一个明确的解决方案:
在本地计算机上将您的计算机设置~/.ssh/config
为具有以下内容:
host WhatYouWillCallTheConnection
hostname the.gateway.server.address.com
user YourUsernameOnTheGateway
在您要连接的网关和终端服务器上,确保本地客户端的公共密钥位于 ~/.ssh/authorized_keys
在网关计算机上,您需要更改,~/.ssh/authorized_keys
以便在指定客户端公钥的行的开头添加强制命令,如下所示:
command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
-A
如果您不希望一直发送密码,则是转发代理...
这样,只要您执行类似的操作ssh WhatYouWillCallTheConnection
,它将直接通过网关运行,并透明地将您连接到另一侧的服务器。
ssh -A
如果您不信任网关计算机的管理员,请不要使用。他无法获取您的私钥,但是只要您通过连接到网关ssh -A
,他就可以使用转发的代理程序与您连接到其他计算机。
端口转发可能会派上用场。
从PC1:
~# ssh -fN -L 22:PC3:7777 -l <user> PC2
7777可以是任何端口(前提是尚未使用)。我只是喜欢这个数字,加上我可以通过+1(7778、7779等)进行管理的任何“排序”。
完成此操作后,您将具有从PC1的本地端口7777到PC3的端口22的“透明”隧道。
~# ssh -l <user> -p 7777 localhost
您应该在PC3上。
如果要建立SOCKS代理,还可以使用-D动态转发端口。
~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2
干杯!
我唯一知道的解决方案是使用Belier的 ssh脚本:
Belier允许通过SSH连接在远程计算机上打开外壳或执行命令。Belier的主要特点是在完成这项工作之前,它可以跨越多台中间计算机。
不久前,我在麻省理工学院林肯实验室主页上找到了这个README.sshhop,但是我找不到关于它的更多信息。有人知道更多吗?