我有 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