我应该使用什么 ssh 命令来设置“向后监听”

我应该使用什么 ssh 命令来设置“向后监听”

计算机 A 位于防火墙后面。我可以物理访问它,但我想远程登录,而且我没有防火墙设置的访问权限。

机器 B 是远程的,不在任何防火墙后面。(这是我的 linode)

机器 C 是我将尝试通过 ssh 连接到 A 的移动设备。

是否有一个 ssh 命令,我可以从连接到机器 B 并保持打开状态的机器 A 运行,从而允许我通过 B 从 C 登录到 A?

根据手册,我猜应该在 A 上运行以下命令

ssh -R *:9999:localhost:22 me@B

然后在 C 上运行

ssh me@B -p 9999

但前一个命令报告“连接被拒绝”。

答案1

为了能够通过中间机器 B(防火墙外部)从机器 C 访问机器 A(防火墙后面),请执行以下操作:

在机器 A 上:

ssh -2 -N -l [acct on B] -g -R 4001:localhost:22 MachineB

可能需要或不需要“-g”。这就是我使用的。
除了“4001”之外,您还可以选择任何端口。

然后在机器B上:

ssh -p4001 -g -L 9999:machineA:22 localhost

请注意,“machineA”也可能是“127.0.0.1”。不能 100% 确定 - 实验一下。
“-g”使端口 9999 也可用于机器 B 外部的其他机器。
省略“-g”会使端口 9999 仅可用于机器 B 上的其他进程。

然后在机器C上:

ssh -p9999 me@MachineB

瞧!

您还可以从 C 访问 A 网络上的另一台机器 D。在 MachineB 上执行以下操作:

ssh -p4001 -g -L 9999:[some machine on MachineA's network]:[some port] localhost

这使您可以访问 MachineA 网络上其他机器的端口。

因此,如果存在一台机器 D,它也位于与机器 A 位于同一网络上的防火墙后面,那么您可以从机器 C 访问它,就像您在机器 A 上一样。

例如,如果机器 D 是一台 Windows Server 机器,而您想要从机器 C(也是一台 Windows 机器)使用远程桌面访问机器 D,请执行以下操作:

机器 A:

ssh -2 -N -l [acct on B] -g -R 4001:localhost:22 MachineB 

(这个是一样的)

机器B:

ssh -p4001 -g -L 9999:machineD:3389 localhost

机器C:启动RDP客户端并连接到MachineB:9999

BAM!您已从机器 C 连接到 Windows Server Box(机器 D)。

相关内容