You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从桌面远程访问LTE调制解调器后动态IP的RPI Zero2W

解决方案:基于开放MQTT端口实现RPI Zero 2W远程访问

核心思路

利用已开放的8883(MQTTS)加密端口,通过反向SSH隧道+MQTT代理的方式,将SSH流量封装进MQTTS连接,绕过LTE端口限制与动态IP问题。

具体实现步骤

1. RPI端部署持久化隧道

先确保RPI已安装必备工具:

sudo apt update && sudo apt install openssh-server mosquitto-clients autossh

用autossh建立持久化反向隧道,将RPI的22端口映射到MQTT服务器的2222端口(可自定义):

autossh -M 0 -R 0.0.0.0:2222:localhost:22 -o ProxyCommand='openssl s_client -connect 你的MQTT服务器地址:8883 -quiet' MQTT服务器用户名@你的MQTT服务器地址
  • -M 0:关闭心跳监听,避免端口冲突
  • ProxyCommand:通过8883端口的MQTTS通道转发SSH流量

2. 桌面端连接配置

在桌面端通过MQTT服务器中转,连接到RPI:

ssh -o ProxyCommand='openssl s_client -connect 你的MQTT服务器地址:8883 -quiet' RPI用户名@localhost -p 2222

3. 适配动态IP的自启配置

为解决LTE动态IP问题,给RPI添加开机自启脚本,确保联网后自动重建隧道:

  1. 创建隧道脚本/usr/local/bin/mqtt-ssh-tunnel.sh:
#!/bin/bash
while true; do
    autossh -M 0 -R 0.0.0.0:2222:localhost:22 -o ProxyCommand='openssl s_client -connect 你的MQTT服务器地址:8883 -quiet' MQTT服务器用户名@你的MQTT服务器地址
    sleep 60  # 断开后60秒重试
done
  1. 赋予执行权限并配置系统服务:
sudo chmod +x /usr/local/bin/mqtt-ssh-tunnel.sh
sudo systemctl edit --force --full mqtt-ssh-tunnel.service

在打开的编辑器中填入以下内容:

[Unit]
Description=MQTT SSH Tunnel for RPI Zero
After=network.target

[Service]
User=pi
ExecStart=/usr/local/bin/mqtt-ssh-tunnel.sh
Restart=always

[Install]
WantedBy=multi-user.target
  1. 启动并启用服务:
sudo systemctl enable --now mqtt-ssh-tunnel.service

极端环境替代方案

如果上述隧道方式受限,可基于MQTT消息通道转发SSH流量:

  • 在RPI端运行轻量脚本,监听指定MQTT主题,将收到的消息转发到本地22端口,同时把SSH输出回传至对应主题
  • 桌面端脚本负责将本地SSH输入发送到MQTT主题,并接收输出展示。此方式延迟略高,但能适配最严格的端口限制

内容的提问来源于stack exchange,提问作者Jae Hong Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:27:43