8

设想:

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

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

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

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

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

如果没有 NAT,它只是通过 SSH 连接到设备,然后我们就走了。但是在这个 NAT'd 环境中我有什么选择呢?

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

指向我可能错过的其他问题(尽管我已经看过)或我应该考虑为中央“会面点”服务器考虑的应用程序的指针欢迎

4

3 回答 3

9

如何简单地设置设备和支持用户都可以访问的 ssh 服务器,并让设备设置反向隧道(使用远程端口转发)?

ssh -R 10022:localhost:22 device@server

然后支持人员可以简单地连接到服务器并使用登录

ssh -p 10022 localhost

当然,这里需要考虑几个安全方面,具体取决于设备持有/可以访问的信息类型以及支持组织的设置方式。

于 2012-08-03T09:49:09.287 回答
8

SSH 是一个合适的工具。正如您所说,您将需要一个中间人服务器。但是设置起来很容易,假设您的“执行脚本的其他方式”是远程的并且可以从您的办公室执行。

因此,在全球 IP 上启动一个新服务器(亚马逊 AWS 微节点免费一年,并且可以很好地完成这项工作),并安装一个 ssh 守护程序。说它有主机名middleman.example.org

放到嵌入式设备上的脚本如下所示;

#!/bin/bash
ssh -i ./middle_id.pem -R 22:localhost:2222 middleuser@middle.example.org

(私钥身份验证将是使登录非交互的一种方式)

放在桌面机器上的脚本如下所示;(假设参数$1是嵌入式设备的 IP,并prod_remote_device.sh在所选嵌入式设备上执行上述脚本。)

#!/bin/bash
./prod_remote_device.sh $1
ssh -i ./device_id.pem deviceuser@middle.example.org:2222

这应该将您的连接转发到嵌入式设备。

于 2012-08-03T09:51:08.747 回答
0

为了使其绑定到所有接口,请使用:

ssh -N -R 0.0.0.0:2222:localhost:22  root@example.com

不要忘记编辑/etc/ssh/sshd_config并转到GatewayPorts启用它并将其设置为yes.

然后从任何Loopback以太网接口连接到它。

于 2018-04-14T08:29:28.250 回答