contribute上次修改:2026-10-07

如何远程访问自己的设备·真远程

现在你是客户端,你有一台设备,可能离你很远,你们之间无法在同一个局域网下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。