![如何:通过 Jumphost ssh 到主机,均在非默认的 22 端口上?](https://linux22.com/image/206817/%E5%A6%82%E4%BD%95%EF%BC%9A%E9%80%9A%E8%BF%87%20Jumphost%20ssh%20%E5%88%B0%E4%B8%BB%E6%9C%BA%EF%BC%8C%E5%9D%87%E5%9C%A8%E9%9D%9E%E9%BB%98%E8%AE%A4%E7%9A%84%2022%20%E7%AB%AF%E5%8F%A3%E4%B8%8A%EF%BC%9F.png)
我的跳转服务器和最终主机都运行在非默认 22 端口上。
根据https://wiki.gentoo.org/wiki/SSH_jump_host
我尝试过ssh -J user1@host1:port1 user2@host2 -p port2
或者ssh -J user1@host1:port1 user2@host2:port2
系统提示我输入跳转服务器密码,然后它们都失败并出现错误
channel 0: open failed: administratively prohibited: port forwarding is disabled
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
那么我该如何让它发挥作用呢?
答案1
手册页显示该选项的格式-J
是-J [user@]host[:port]
,所以-J user1@host1:port1
看起来是正确的:
-J [user@]host[:port]
首先与跳转主机建立 ssh 连接,然后建立从那里到最终目的地的 TCP 转发,从而连接到目标主机。可以指定多个跳转,并用逗号分隔。这是指定 ProxyJump 配置指令的快捷方式。
但基于该错误,您的问题似乎不是端口规范,而是中间主机不允许端口转发并且-J
需要端口转发的事实。
如果无法更改这一点,但您确实信任跳转主机,则可以与跳转主机建立一个连接,并在那里运行另一个 SSH 客户端以打开与最终目标主机的连接:
ssh user1@host1:port1 'ssh user2@host2:port2'
(或者也许与ssh -t
)