远程访问Raspberry Pi:SSH与VNC

拿到树莓派之后,第一件事是什么?

我个人习惯是先把它“藏”起来——塞到角落里,连上网线电源,然后回到自己的电脑前操作。你想想看,总不能每次调试都搬个显示器和键盘过去吧?

这一章,咱们就聊聊远程访问。说白了,就是把你的笔记本电脑变成树莓派的“远程遥控器”。

远程访问Raspberry Pi 核心架构 你的笔记本电脑 SSH 客户端 / VNC Viewer 局域网路由器 192.168.x.x 网段 Raspberry Pi SSH 服务 / VNC 服务 SSH(命令行模式) 轻量级 · 仅传输文本 适合代码编辑 · 服务管理 · 调试 带宽占用极小 · 延迟低 VNC(图形界面模式) 传输完整桌面画面 适合GUI操作 · 视觉调试 带宽较高 · 需要网络稳定 💡 工作场景选择建议 只部署模型、改配置文件 → 用 SSH 就够了 需要观察 GUI 程序输出、调试 OpenCV 画面 → 用 VNC 互联网远程(不在同一局域网)→ SSH + 端口转发 或 内网穿透

SSH:最基础的远程利器

SSH 这东西,做嵌入式的应该都不陌生。它就是个加密的“管道”,让你能安全地在远程设备上敲命令。

我记得刚入行时,有天半夜被电话叫醒,说现场设备连不上。我穿着睡衣,靠 SSH 连到千里之外的设备上,硬是敲了几行命令就修好了。嗯,从那以后我彻底爱上了 SSH。

第一步:在树莓派上启用 SSH

有两种方式——看你的操作系统版本:

系统类型 启用方法
Raspberry Pi OS(桌面版) 系统菜单 → Preferences → Raspberry Pi Configuration → Interfaces → 启用 SSH
Raspberry Pi OS Lite(无桌面) sudo raspi-config → Interface Options → SSH → Enable
烧录阶段提前配置 在 SD 卡 boot 分区新建一个名为 ssh 的空文件(无扩展名)
我的习惯: 烧录系统后,直接在 boot 分区建 ssh 文件。这样第一次开机就能远程连,省得接显示器。特别是部署 llama.cpp 这种场景,树莓派通常都是“无头”运行的。

第二步:找到树莓派的 IP 地址

最笨也最实用的方法——登录路由器管理页面,看 DHCP 客户端列表。名字通常是 raspberrypi。

如果你像我一样懒得开浏览器,可以这样做:

  • 用 nmap 扫描局域网:nmap -sn 192.168.1.0/24
  • 或者直接用 arp -a 看看缓存的 MAC 地址

第三步:连接上去

ssh pi@192.168.1.100

第一次连接会问你要不要接受密钥,打 yes 就行。默认密码是 raspberry。

⚠️ 安全警告: 千万别用默认密码上生产环境!我曾经见过有人把树莓派放公网上,默认密码一晚上就被扫爆了。至少改成复杂密码,最好禁用密码登录、改用密钥认证。

SSH 密钥认证:一劳永逸的配置

每次输密码虽然能忍,但批量操作时就烦人了。更关键的是——密码登录容易被暴力破解。

我的做法是生成一对密钥:

# 在笔记本上执行
ssh-keygen -t ed25519 -C "my-raspberry-pi"
# 一路回车,不设密码也可以(方便自动脚本)
ssh-copy-id pi@192.168.1.100

搞定之后,再连 SSH 就不用输密码了。而且 ed25519 比 RSA 更安全、更短。我个人后来全部换成了这个算法。

SSH 的“高级玩法”:端口转发

部署 llama.cpp 时,经常需要把树莓派上的某个服务映射到本地。比如 llama.cpp 的 API 跑在 8080 端口,你不想在局域网暴露它。

ssh -L 8080:localhost:8080 pi@192.168.1.100

这样你在笔记本上打开 http://localhost:8080,就能直接访问树莓派上的服务了。全程加密传输,别人嗅探不到。

VNC:给树莓派装上“远程桌面”

SSH 虽好,但有时候你就是想看看图形界面。比如调试 OpenCV 的显示效果,或者用 GUI 工具配置某些参数。

VNC 的原理很简单——树莓派把屏幕画面压缩了,通过网络传给你。你这边看到的就跟坐在树莓派前一样。

VNC 方案对比

方案 特点 推荐场景
RealVNC(内置) 系统自带,开箱即用;但需要注册账号 简单体验,不想折腾
TightVNC 轻量级,带宽占用小;但功能略少 网络不好、只传简单画面
x11vnc 直接复用当前物理屏幕 需要看到跟显示器一模一样的画面

我个人做 llma.cpp 部署时,常用 x11vnc。因为它能看到模型的实时输出,不会搞混虚拟桌面和物理桌面。

安装和配置 x11vnc

# 树莓派上执行
sudo apt update
sudo apt install x11vnc

# 设置连接密码(以后连 VNC 要用)
x11vnc -storepasswd

# 启动服务:共享当前桌面
x11vnc -forever -shared -passwd-file ~/.vnc/passwd

然后在你笔记本上打开 VNC Viewer,输入树莓派的 IP 地址加端口 :5900,就能看到桌面了。

实用小技巧: 把 x11vnc 做成 systemd 服务,让它开机自启动。这样树莓派一上电,你就能远程连上桌面,跟“本地操作”一样顺手。特别是在家里折腾模型时,这种体验太爽了。

避坑指南:SSH 和 VNC 常见问题

  • SSH 连不上? 先确认 IP 地址对不对,再检查树莓派的 SSH 服务有没有启动。我经常犯的错误是路由器改了网段结果忘了更新 IP。
  • VNC 画面卡顿? 降低颜色深度或分辨率。在 x11vnc 启动参数加 -qscale 3 可以平衡画质和流畅度。
  • 端口被防火墙挡了? 确认路由器或树莓派本身的防火墙没有拦截 22(SSH)和 5900(VNC)端口。
  • 密钥认证失败? 检查 ~/.ssh 目录权限是否为 700,公钥文件的权限是否为 600。权限不对会让 SSH 直接拒绝。

远程访问这件事,说白了就是让你的操作半径从一米变成无限。我在客户现场接过无数紧急支援电话,靠的就是 SSH 这根“救命稻草”。

掌握好 SSH 和 VNC,你的树莓派就不再是桌上那个小盒子——它变成了一台随时听候调度的远程服务器。后续部署 llama.cpp 时,你会发现这些基础能力有多关键。