xj9*_*xj9 9 ssh port-forwarding
我已ssh
配置为通过堡垒主机自动转发:
Host bastion_host
HostName bastion.example.com
Host internal_host
ProxyCommand ssh -q bastion_host nc -q0 internal_host.dmz 22
User internal_user
Run Code Online (Sandbox Code Playgroud)
这有效。但是,如果我尝试通过mosh进行连接,则会出现以下错误:
$ mosh internal_host
/usr/local/bin/mosh: Could not resolve hostname internal_host
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是mosh
从我的系统到堡垒主机的连接以及ssh
从堡垒主机到内部主机的正常隧道。可能的?
您在 ssh 配置中使用了 ProxyCommand,而 mosh 在错误消息中提到了 ProxyCommand。我认为这是至关重要的线索。mosh 在内部使用 ProxyCommand,在这样做时,它可能会覆盖您自己的设置。
我已经通过像这样的手动端口转发调用避免了 ProxyCommand:
ssh -fN -L 2222:internal_host.example.com:22 bastion_host
Run Code Online (Sandbox Code Playgroud)
然后我尝试在端口 2222 上连接到本地主机:
mosh --ssh="ssh -p2222" internal_user@localhost
Run Code Online (Sandbox Code Playgroud)
我得到了这个,而不是 ProxyCommand 错误:
mosh-server: invalid option -- 'l'
Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...]
Run Code Online (Sandbox Code Playgroud)
我怀疑这是由于不同版本的 mosh,正如我所看到的,即使在没有 bastion_host 的情况下直接使用 mosh。无论如何,尽管有消息,直接连接仍然有效,所以我认为这不是问题所在。相反,我认为问题在于端口转发仅处理端口 22,而 mosh 也在 60000:61000 中使用 UDP 端口。ssh 隧道无法轻松转发 UDP 流量,因此我认为您最好使用不同的架构。
我想你想在第一跳使用 mosh,因为你的本地机器可能会改变网络等。为什么不像这样使用 mosh 和 ssh(也许使用别名)?
mosh bastion_host ssh internal_user@internal_host
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5134 次 |
最近记录: |