如何远程访问自己的设备·真远程
现在你是客户端,你有一台设备,可能离你很远,你们之间无法在同一个局域网下SSH连接,于是你想到了,能不能找一个第三方,你和设备都能通过SSH连接它?
兄弟可以的!
找一个有公网IP的服务器,配置好后你和你的设备都能连接它,建立一条新的SSH隧道
本地局域网:电脑 ───────────────→ 设备
公网:电脑 → 公网服务器 → 隧道 → 设备
参考了随时掌握你的设备状态 | Raspberry Pi 树莓派官方文档 做这个一是因为我本身租了一台服务器,用起来也很稳定,且之前在很紧急的时候遇到过SSH连接异常的问题,于是想用这个公网IP做兜底
以下分享我如何远程操控我的香橙派
总的来说,这三个地方需要这样:
| 地方 | 要做什么 |
|---|---|
| 香橙派 | 主动连接服务器,建立反向隧道;配置开机启动、断线重连 |
| 公网服务器 | 接受派的密钥登录,在回环地址上提供转发入口 |
| 电脑 | 保留本地 pi 入口,新增通过服务器访问的 pi-relay 入口 |
以下均是使用SSH密钥登录,见SSH密钥登录
1.服务器:准备接收这条隧道。
我的电脑通过 ssh blueee-server (我之前已配置过电脑连接服务器的密钥对,如同第一步)登录服务器后:
- 创建专用用户
opi-tunnel。
sudo adduser opi-tunnel
- 设置目录权限
700、公钥文件权限600。
chmod 700 /home/opi-tunnel/.ssh
chmod 600 /home/opi-tunnel/.ssh/authorized_keys
chown -R opi-tunnel:opi-tunnel /home/opi-tunnel/.ssh
- 限制该用户只用于反向转发,允许监听
127.0.0.1:2222。 在/etc/ssh/sshd_config末尾添加:
Match User opi-tunnel
AllowTcpForwarding yes
PermitOpen 127.0.0.1:2222
X11Forwarding no
AllowAgentForwarding no
PermitTTY no
ForceCommand /bin/false
- 检查 SSH 配置语法,再重新加载配置。
sshd -t
systemctl reload sshd
服务器的 SSH 转发目前已允许,公网 SSH 的 22 端口也已经可用。无需把 2222 开放到公网,电脑会先通过 SSH 登录服务器,再访问它的回环端口。
2.香橙派:生成“派连接服务器”专用的密钥。
派开机后,在派上执行:
ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519_blueee_tunnel -N ''
私钥留在派上,把对应 .pub 公钥交给服务器。
ssh-copy-id -i ~/.ssh/id_ed25519_blueee_tunnel.pub opi-tunnel@<填服务器的公网IP>
服务器配置好以后,先手动建立隧道(详细见说明):
ssh -NT -i /root/.ssh/id_ed25519_blueee_tunnel -o IdentitiesOnly=yes -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -R 127.0.0.1:2222:127.0.0.1:22 opi-tunnel@<填服务器的公网IP>
这条命令的含义是:
服务器 127.0.0.1:2222 → 隧道 → 香橙派 127.0.0.1:22
命令运行后通常没有输出,并占用当前终端,这是正常的。
3.电脑:增加一个公网连接别名。
在我电脑的SSH配置文(C:\Users\Kristin\.ssh\config)件中新增:
Host pi-relay
HostName 127.0.0.1
Port 2222
User root
ProxyJump blueee-server
IdentityFile C:/Users/Kristin/.ssh/id_ed25519_orangepi5plus
IdentitiesOnly yes
HostKeyAlias gongchuang-pi
ServerAliveInterval 30
ServerAliveCountMax 10
这里有ProxyJump,指向我的服务器blueee-server,连接的是服务器本地回环的127.0.0.1:2222,前面在香橙派建立隧道那里有-R 127.0.0.1:2222:127.0.0.1:22,表明香橙派主动把“服务器本地 2222 端口”和“自己的 22 端口”绑定了。所以电脑连的虽然是服务器,但访问服务器本地 2222 端口时,流量会被直接转发给香橙派。
现在的两条隧道
以后分别执行:
ssh pi # 本地连接(已经给香橙派配置过密钥对和别名)
ssh pi-relay # 通过公网服务器连接
说明
派上建立隧道
ssh -NT -i /root/.ssh/id_ed25519_blueee_tunnel -o IdentitiesOnly=yes -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -R 127.0.0.1:2222:127.0.0.1:22 opi-tunnel@<填服务器的公网IP>
原型是
ssh -NT -i [私钥] -o [选项1] -o [选项2] ... -R [端口映射] [用户名]@[云服务器公网IP]
参数详解
| 参数 | 含义 |
|---|---|
-N |
不执行远程命令,仅做端口转发(纯隧道) |
-T |
禁用伪终端分配,节省资源,适合后台运行 |
-i /root/.ssh/id_ed25519_blueee_tunnel |
指定用于认证的私钥文件 |
-o IdentitiesOnly=yes |
强制仅使用 -i 指定的私钥,避免尝试其他密钥导致认证失败或触发风控 |
-o ExitOnForwardFailure=yes |
端口转发失败时立即退出(配合 autossh/systemd 自动重连) |
-o ServerAliveInterval=30 |
每 30 秒发送心跳包给云服务器,保持连接存活 |
-o ServerAliveCountMax=3 |
连续 3 次(即 90 秒)未收到响应,自动断开重连 |
-R 127.0.0.1:2222:127.0.0.1:22 |
反向转发核心:在云服务器监听 127.0.0.1:2222,将流量转发到香橙派的 127.0.0.1:22(SSH 服务) |
opi-tunnel@<填服务器的公网IP> |
香橙派登录云服务器的专用用户名和云服务器公网 IP |
💡 安全注意:
-R绑定的是云服务器的本地回环127.0.0.1,外部无法直接扫描访问,只有登录云服务器内部才能连回香橙派,这是最安全的做法。
留言区
不收集任何个人信息;昵称只绑定浏览器里的随机 Cookie。