通过另一台主机通过 SSH 连接到远程主机

0ra*_*ang 3 ssh socks tunnel

我正在尝试通过 ssh 连接到远程主机 B,但网络访问控制规定我只能通过主机 A 执行此操作。我将如何执行此操作?

已尝试创建到主机 A 的隧道 ssh -f -N -D 2222 user@hostA

然后当从本地创建新的 ssh 连接时指定隧道端口来隧道这些连接,但不能让它工作.. ssh -L 2222:hostB:22 hostA

涉及主机:本地主机A(本地内网)主机B(内网)

流量:Local > HostA > HostB

任何指针都将是超级手……提前致谢!

EEA*_*EAA 5

您为此使用动态端口转发的想法永远不会奏效。从逻辑上考虑它 - 您需要打开一个本地端口,该端口从本地计算机通过 hostA 转发到 hostB 上的端口 22。有几种方法可以实现这一点。一、不雅的手动方式:

首先,设置隧道:

$ ssh -L2222:hostB:22 user@hostA
Run Code Online (Sandbox Code Playgroud)

然后,连接到主机B:

$ ssh -p 2222 user@localhost
Run Code Online (Sandbox Code Playgroud)

首选选项是使用 ssh 客户端的ProxyCommand指令,它可以为您自动执行此操作。将这样的内容添加到您的~/.ssh/config

host hostB
  Hostname hostB
  ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

完成此操作后,您可以执行以下操作:

$ ssh hostB
Run Code Online (Sandbox Code Playgroud)

...并且 ssh 客户端将为您处理一切。