如何使用另一台服务器和第二台服务器的密钥通过 SSH 连接到一台服务器?

cze*_*asz 7 ssh proxy

如何配置ssh来模仿这个:

ssh server1-user-name@server1.net -i /path/to/.ssh/server-1-ssh-key -t ssh server2-user-name@10.0.0.10 -i /home/server1-user-name/.ssh/server2-ssh-key
Run Code Online (Sandbox Code Playgroud)

当我执行

ssh server2
Run Code Online (Sandbox Code Playgroud)

解释:

  • 我使用本地机器上的密钥登录 server1.net ( /path/to/.ssh/server-1-ssh-key)

    ssh server1-user-name@server1.net -i /path/to/.ssh/server-1-ssh-key
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后我登录到具有以下 IP 10.0.0.10 的服务器。为此,我使用/home/server1-user-name/.ssh/server2-ssh-key存储在 server-1 上的密钥 ( )

对于这种情况,我的本地计算机上的 ssh 配置应该如何?

我尝试了以下配置:

Host server2
  Hostname 10.0.0.10
  User server2-user-name
  ForwardAgent yes
  ProxyCommand ssh -i /path/to/.ssh/server-1-ssh-key -W %h:%p
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

小智 6

所以基本上你希望 server1 作为你的 jumpbox,所以你需要为 server1 写一个节:

Host server1
Hostname server1.net
User server1-user-name
IdentityFile /path/to/.ssh/server-1-ssh-key
Run Code Online (Sandbox Code Playgroud)

然后你需要一个服务器 2 的节来跳过这个:

Host server2
Hostname 10.0.0.10
User server2-user-name
ForwardAgent yes
ProxyCommand ssh server1 nc %h %p 2> /dev/null
IdentityFile /home/server1-user-name/.ssh/server2-ssh-key
Run Code Online (Sandbox Code Playgroud)