我即将在偏远地区(距我 300 多公里)安装 raspberrypi。它将通过 GSM 连接,因为 3G/4G 上没有固定电话。我需要一种方法在 pi 内部“ssh”来管理一些东西。由于 GSM 没有端口转发,我的想法是使用恩格罗克建立隧道外壳连接。
唯一的问题是 SSH 太重,无法在 600+ms 的连接上运行。Mosh 看起来不错,也很稳定,但我需要设置静态密钥和端口,我不知道这是否可行。
Telnet 也是一个选项,因为 ngrok 会加密隧道。还有其他选择吗?我还需要上传/下载一些小文件(x/zmodem?)
答案1
您正在寻找的是 mosh (Mobile Shell),尽管您在客户端和服务器端都需要它......
答案2
我会暂时忘记您正在使用 RPi 来实现这一点,而是使用可靠的专业级硬件。
- 使用 IPSec 或其他 VPN 将流量隧道传输回您的主要位置。如果这不是一个选项,请使用具有反向端口转发的 autossh 来维持持久连接。
- 使用 Ansible 管理远程系统。它确实使用 SSH,但它不是交互式的,因此完成任务需要 30 秒或 5 分钟都没关系。您可以针对本地目标开发和测试 Ansible 剧本,以验证它们是否按预期执行,然后再将它们应用于远程系统。
- 确保您已在 SSH 中启用压缩。
答案3
您可以在延迟数百毫秒的连接上使用 ssh。这可能令人沮丧,但并非不可能。
Mosh 通常使用 ssh 来设置初始连接,高延迟对此来说应该不是问题。但是您需要确保 mosh 所需的 UDP 端口能够通过。
我的建议是,不要摆弄单个端口,而是使用 openvpn 设置从远程设备到您自己的网络的 VPN。然后使用带有内部 IP 的 ssh/mosh。您可能需要考虑在 pi 上设置一个看门狗脚本来测试 VPN 并在需要时重新启动它。蜂窝网络有时会非常不稳定。
答案4
我的解决方案稍微有点创新。
首先,尝试弄清楚您是否可以获得至少 3G(如果不是 LTE),但 3G 已经应该为您提供足够的吞吐量,以便轻松使用 ssh 完成中等重量的任务。根据您拥有的调制解调器,有一系列以功率增益为特征的天线。尝试获取移动网络覆盖范围的良好地图并找到最近的基站。为此,您需要考虑无线电传播规则。最近的一个可能不是距离最短的那个,而是天线扇区朝向你且功率最大的那个。通过阅读和计算,你可能会得到令人满意的蜂窝连接。
第二种解决方案类似,但与移动网络无关,而是与 wifi 热点有关。人们通常不知道他们所在地区的无线互联网提供商。如果您能够使用强大的天线测量空气,为什么不尝试一下呢。如果不是商业 ISP,附近的城镇可能会有免费热点。或者您可能有一个网络连接良好的好邻居,但您认为他住得太远了。
在这两种解决方案中,天线和调制解调器/网卡的质量都很重要。电缆和连接器也同样重要。