如何通过反向 SSH 隧道连接到远程服务器,但与隧道连接的服务器不同?

如何通过反向 SSH 隧道连接到远程服务器,但与隧道连接的服务器不同?

我觉得我迄今为止的研究中使用的术语可能不正确,这就是为什么我找不到我想要的东西。我所找到的只是有关如何设置反向 SSH 隧道和/或如何从隧道另一端的服务器通过 SSH 连接到远程服务器的信息,但这不是我想要的。

我有许多远程服务器,它们与中央服务器建立反向 SSH 隧道(我称之为“跳转服务器“,但我也看到它被称为“堡垒服务器”和其他术语)。这些反向 SSH 隧道工作正常,来自“跳转服务器”本身-p,只需通过 SSH 连接到特定服务器隧道的端口号(使用标志)即可通过 SSH 连接到任何远程服务器。

但我想做的是从“跳转服务器”以外的服务器(可能甚至使用类似 PuTTY 的东西)通过“跳转服务器”连接到远程服务器。我非常确定这是可能的,但我对该命令的语法(或 PuTTY 的任何“隧道”功能)不太熟悉。

“跳转服务器”运行的是 Ubuntu 18.04。我尝试过使用 PuTTY 从其他 Ubuntu 服务器和 Windows 服务器进行 SSH 连接,但我的第一个目标是先让它在两台 Linux 服务器之间运行(PuTTY 是一个加分项)。

反向 SSH 隧道已设置远程服务器,到“跳转服务器”,在远程服务器上使用此命令:

ssh -i /home/root/.ssh/rssh_rsa -f -K 10 -N -R 0:localhost:22 jump.example.com

(请注意,0之前的操作localhost会导致“跳转服务器”动态选择其隧道末端的端口号)。

答案1

我认为您需要做的就是*:在隧道端点规范的开头添加。所以您需要*:0:localhost:22。这告诉 ssh 在 jumphost 隧道端点上监听所有接口,而不仅仅是 localhost。

如果jumphost有多个接口,你可以指定其中一个来监听(例如192.168.1.1:0:localhost:22)。

然后你只需要ssh -p NNN jump.example.com进入隧道。

希望这是显而易见的,但这意味着任何能够连接到 jumphost 上该端口的人都可以连接到远程服务器。请相应地设置防火墙规则。

相关内容