通过中间 SSH 服务器(在 docker 中)连接到 SSH 服务器(在 VM 中)

通过中间 SSH 服务器(在 docker 中)连接到 SSH 服务器(在 VM 中)

我有 2 个 SSH 服务器(server1 在 docker 容器中运行,server2 在 VM 中运行)。从我的笔记本电脑,我可以连接到第一个服务器(ssh server1),但出于安全原因无法连接到第二个服务器。但我可以从 server1 连接到第二个服务器(ssh server2)。

有没有什么办法可以从我的笔记本电脑连接到 server2?

这是部署在我的笔记本电脑和服务器 1 上的 .ssh/config 文件:

Host server1
    HostName 127.0.0.1
    User debian
    Port 2222
    IdentityFile /home/guillaume/.ssh/id_rsa

Host server2
    HostName 172.29.160.1
    User debian
    Port 1022
    IdentityFile /config/id_rsa

我尝试了 ssh 链接:

ssh server1 ssh server2

虽然这确实有效,但它不允许我从笔记本电脑在 server2 中运行 docker 命令。

我也尝试过跳转:

ssh -J server1 server2

但它返回:

channel 0: open failed: administratively prohibited: open failed
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

我也尝试了代理命令:

ssh -o ProxyCommand="ssh -W %h:%p server2" server1

但该命令将永远阻塞。

答案1

非常感谢您在答案的评论部分提供的提示!我通过两处更改使其正常工作。

  • 在中间服务器 (/etc/ssh/sshd_config) 中将 AllowTcpForwarding 设置为 yes
  • 按照以下步骤更新笔记本电脑上的 .ssh/config
Host server1
  HostName 127.0.0.1
  User debian
  Port 2222
  IdentityFile /home/guillaume/.ssh/id_rsa

Host server2
  HostName 172.29.160.1
  User debian
  Port 1022
  IdentityFile /home/guillaume/.ssh/id_rsa  # put the path to the private key on the laptop
  ProxyCommand ssh server1 -W %h:%p         # added this line

相关内容