Local Computer (Fedora) --SSH--> Server1 --SSH--> Server2
在我工作的一些环境中,我们必须使用“跳转盒子”(ssh box),在其中您需要ssh到一个服务器才能到达另一个服务器。 有没有一个快速的方法来做到这一点,也许通过编辑〜/ .ssh / config,这样每当我从本地计算机ssh到Server2,它会自动创build必要的连接到Server1? 我可以设置密钥,以便在必要时不会提示input密码给Server1。
这种types的function被添加到OpenSSH版本5.4中,可以被使用
ssh -W server2 server1
其中server2是您的预期目标, server1是您的代理主机。 通过在你的sshconfiguration文件中使用ProxyCommand选项,你可以ProxyCommand这个过程:
host = *.example.com user = packs port = 22 ProxyCommand ssh -W %h:%p server1
我也看到它使用netcat完成,所以与上面相同的例子
ssh server1 nc -q0 server2 22
同样,这也可以在你的sshconfiguration中使用,除了将ProxyCommandreplace为
ProxyCommand ssh server1 nc -q0 %h %p
你可以使用如下命令:
$ ssh -t user@server1 ssh user@server2
这个命令通过server1 ssh你到server2。 您将被连续提示input两个密码login到server1,然后login到server2。 如果您设置了所需的SSH密钥,则应该自动login到server2。
当您无法直接login到server2时,这非常有用。
我使用转发的端口:
# ~/.ssh/config # The jumping-off point Host server1 Hostname blah.sample.com LocalForward 10002 server2:22 LocalForward 10003 server3:22 # Servers behind the jumping-off point, reached by connecting # to the forwarded ports above Host server2 HostKeyAlias server2 Hostname localhost Port 10002 Host server3 HostKeyAlias server3 Hostname localhost Port 10003
这比ssh -t user@server1 ssh user@server2有几个优点:
ssh , scp和sftp (例如,你可以scp thisfile server2:~/thatfile而不必做任何额外的操作)。