如何:通过 Jumphost ssh 到主机(两者都在非默认 22 端口上)?

Qiu*_* 邱朗 4 ssh scp

我的跳转服务器和最终主机都运行在非默认 22 端口上。

根据https://wiki.gentoo.org/wiki/SSH_jump_host 我尝试过ssh -J user1@host1:port1 user2@host2 -p port2ssh -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
Run Code Online (Sandbox Code Playgroud)

那么我该如何让它发挥作用呢?

ilk*_*chu 5

手册页显示该-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'
Run Code Online (Sandbox Code Playgroud)

(或者也许与ssh -t

  • 或者回退到老式的“ProxyCommand”选项(使用“ssh -W”或“ssh ... nc”) (2认同)