如何为 shell 提供“反向 ssh”?

如何为 shell 提供“反向 ssh”?

设想:

许多嵌入式设备(运行 Linux)位于现场,在路由器后面,因此经过 NAT,我们无法与它们建立连接。

我们需要一名支持人员能够在任何设备上启动终端/shell 会话。

他们的本地终端也将在公司防火墙后面进行 NAT,因此我们需要一些他们和设备都可以连接的中央“会面点”。

如果有必要,我们可以要求支持人员登录某种终端服务器,但我更喜欢在他们的桌面上弹出一个终端窗口的解决方案。

我们可以(通过其他方式)告诉设备执行一些任意脚本或应用程序来启动会话。

如果没有 NAT,我们只需通过 SSH 连接到设备即可。但是在这个 NAT 环境中我有什么选择呢?

如果需要,我们可以在任一端或会面点服务器开发代码,但显然如果有应用程序,我们就不必编写东西,那就更好了。

欢迎指出我可能遗漏的其他问题(尽管我已经查看过)或我应该考虑用于中央“会议点”服务器的应用程序

答案1

我建议打开从嵌入式设备到您控制的服务器(我们称之为服务器)的 SSH 连接,并创建到嵌入式设备端口 22 的反向端口转发。您需要在服务器上使用非静态端口号,因为您有并行连接。例如,假设您将服务器端口 2222 反向端口转发到嵌入式设备端口 22。然后您(或支持人员)可以通过连接到服务器端口 2222 来启动到嵌入式设备的完整 ssh 连接。此连接可以从 NAT 环境中启动。您仍然需要将服务器放在公共 IP 上,但即使某种 dyndns 解决方案也足够了。

ssh连接建立后,可以停止SERVER上2222端口的监听(即拆除反向端口转发),这样SERVER上只需要在建立新连接期间保留监听端口即可。

请参阅man ssh并查看标志-L-R。我认为您想使用-R。请注意启用选项的bind address和要求。请参阅部分以获取示例。如果您需要在嵌入式设备上编写其他脚本,另请参阅和配置选项。GatewayPortsTCP FORWARDING-fExitOnForwardFailure

相关内容