通过第三台机器的 SSH

Sea*_*mIT 7 linux ssh ssh-tunnel

Local Computer (Fedora)  --SSH-->  Server1  --SSH-->  Server2
Run Code Online (Sandbox Code Playgroud)

在我工作的某些环境中,我们必须使用“跳转框”,您可以通过 ssh 连接到一台服务器,以便到达另一台服务器。有没有一种快速的方法可以做到这一点,也许是通过编辑 ~/.ssh/config,这样每当我从本地计算机 ssh 到 Server2 时,它都会自动创建到 Server1 的必要连接?我可以设置密钥,以便在必要时不会提示我输入 Server1 的密码。

Kha*_*led 7

您可以使用如下命令:

$ ssh -t user@server1 ssh user@server2
Run Code Online (Sandbox Code Playgroud)

此命令将您通过 server1 ssh 连接到 server2。系统将提示您连续输入两个密码以登录 server1,然后登录 server2。如果您设置了所需的 SSH 密钥,您应该会自动登录到 server2。

这在您无法直接登录 server2 时非常有用。


Sco*_*ack 6

此类功能已添加到 OpenSSH 5.4 版中,可以通过执行以下操作来使用

ssh -W server2 server1
Run Code Online (Sandbox Code Playgroud)

server2您的预期目的地在哪里,server1您的代理主机在哪里。您可以通过使用ProxyCommandssh 配置中的选项来简化此操作,例如:

host = *.example.com
user = packs
port = 22
ProxyCommand ssh -W %h:%p server1
Run Code Online (Sandbox Code Playgroud)

我也看到它使用 netcat 完成,所以使用与上面相同的示例

ssh server1 nc -q0 server2 22
Run Code Online (Sandbox Code Playgroud)

同样,这也可以在您的 ssh 配置中使用,除了替换ProxyCommandas

ProxyCommand ssh server1 nc -q0 %h %p
Run Code Online (Sandbox Code Playgroud)