Answers:
我知道您只想登录到计算机C,而不是从A到C真正建立隧道。因此,这应该可以解决问题:
ssh -t computer-b "ssh computer-c"
您可能必须两次输入密码,首先是计算机B,然后是计算机C,但这可以通过使用ssh的密钥对身份验证来避免。
ssh -t computer-b "ssh -t computer-c 'ssh computer-d'"
:d
ProxyCommand
请参阅man ssh_config
。我建议利用的ProxyCommand
。让我们来看看您的原始场景:
~/.ssh/config
使用以下内容进行编辑。
Host computerb
HostName <hostname or IP of Computer B>
Host computerc 192.168.35.*
ProxyCommand ssh computerb nc -w 180 %h %p
现在您可以透明地访问计算机C。例如
ssh computerc
您只需要将私钥放在计算机A(您的计算机)上。该nc
命令将充当SSH加密通信的代理。这包括身份验证。将您的私钥分发到多个服务器是一个非常糟糕的主意(因为任何具有私钥的受感染服务器最终都会损害您的私钥)。
使用可以匹配多台目标计算机Host
。单个计算机或特定网络(例如192.168.35.0/24
,在上面的示例中)中的任何计算机,以通过计算机B进行代理。它还充当别名。
ssh 192.168.35.27
在上面的示例中,它将通过计算机B代理以获取IP地址。
使用此方法,您可以根据需要菊花链连接许多自动代理。例如,您可以添加只能从计算机C访问的计算机D,并且该计算机将透明地工作。
Host computerd
ProxyCommand ssh computerc nc -w 180 %h %p
ssh computerd
在以上ssh_config
示例中,将自动通过计算机C和计算机B进行代理。