The*_*aul 8 linux ssh shell remote-access nat
场景:
许多嵌入式设备(运行Linux)都在字段中,在路由器后面,所以NAT'd,我们无法与它们建立连接.
我们需要一个支持人员才能在任何设备上启动终端/ shell会话.
他们的本地终端也将在公司防火墙后面进行NAT,因此我们需要一些他们和设备可以连接的中央"会面点".
如果有必要,我们可以要求支持人员登录某种终端服务器,但我更喜欢只在桌面上弹出终端窗口的解决方案.
我们可以(通过其他方式)告诉设备执行一些仲裁脚本或应用程序来启动会话.
没有NAT,它只是设备的SSH,我们离开.但是在这个NAT环境中我的选择是什么?
如果需要,我们可以在任何一端或会合点服务器上开发代码,但显然如果有应用程序那么我们就不必编写内容,甚至更好.
指向我可能错过的其他问题(虽然我已经看过)或我应该考虑为中央"会面点"服务器的应用程序的指针欢迎
如何简单地设置设备和支持用户都可以访问的ssh服务器,并让设备设置反向隧道(使用远程端口转发)?
ssh -R 10022:localhost:22 device@server
Run Code Online (Sandbox Code Playgroud)
然后,支持人员可以简单地连接到服务器并使用登录
ssh -p 10022 localhost
Run Code Online (Sandbox Code Playgroud)
当然,这里需要考虑几个安全方面,具体取决于设备拥有/访问的信息类型以及支持组织的设置方式.
SSH是一个适合此的工具.正如你所说,你将需要一个中间人服务器.但是设置非常简单,假设你的"执行脚本的其他方法"是远程的并且可以从你的办公室执行.
因此,在全局IP上启动新服务器(亚马逊AWS微节点可以免费使用一年,并且可以正常工作),并安装ssh守护程序.说它有主机名middleman.example.org.
放入嵌入式设备的脚本看起来像;
#!/bin/bash
ssh -i ./middle_id.pem -R 22:localhost:2222 middleuser@middle.example.org
Run Code Online (Sandbox Code Playgroud)
(私钥认证将是一种使登录非交互的方式)
放在桌面计算机上的脚本看起来像; (假设参数$1是嵌入式设备的IP,并prod_remote_device.sh在选定的嵌入式设备上执行上述脚本.)
#!/bin/bash
./prod_remote_device.sh $1
ssh -i ./device_id.pem deviceuser@middle.example.org:2222
Run Code Online (Sandbox Code Playgroud)
这应该转发您与嵌入式设备的连接.