我正在尝试通过 ssh 连接到远程主机 B,但网络访问控制规定我只能通过主机 A 执行此操作。我该怎么做呢?
已尝试创建到主机 A 的隧道 ssh -f -N -D 2222 user@hostA
然后,当从本地指定隧道端口创建新的 ssh 连接以隧道连接这些连接时,但无法使其工作.. ssh -L 2222:hostB:22 hostA
涉及的主机:本地主机 A(本地内联网)主机 B(互联网)
流量流向:本地 > HostA > HostB
任何指点都将非常有用。提前谢谢!
答案1
您使用动态端口转发的想法永远不会奏效。请从逻辑上考虑一下 - 您需要打开一个本地端口,该端口从本地计算机通过主机 A 转发到主机 B 上的端口 22。有几种方法可以实现这一点。首先,是不太优雅的手动方式:
首先,建立隧道:
$ ssh -L2222:hostB:22 user@hostA
然后,连接到主机B:
$ ssh -p 2222 user@localhost
首选方案是使用 ssh 客户端的ProxyCommand
指令,它可以帮您自动完成此操作。将类似以下内容添加到您的~/.ssh/config
:
host hostB
Hostname hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
完成此操作后,您可以执行以下操作:
$ ssh hostB
...ssh 客户端将为您处理一切。