一、问题背景
最近在调试树莓派时,遇到了一个典型的 SSH 连接失败问题:
-
树莓派 IP:
172.27.xxx.xxx(企业级内网段) -
主机 IP:
172.27.xxx.xxx(与树莓派同网段) -
SSH 配置信息如下:
bash
Host raspberrypi
HostName 172.27.xxx.xxx
User pi
Port 22
但在执行 ssh pi@172.27.xxx.xxx 时,始终无法连接。
本文记录了完整的排查思路与解决方案,并附带了 VNC 开机自启动的配置方法,供有类似需求的读者参考。
目录
[1. 检查 IP 地址段是否一致](#1. 检查 IP 地址段是否一致)
[2. 测试 ICMP 连通性](#2. 测试 ICMP 连通性)
[三、深入诊断 SSH 服务状态](#三、深入诊断 SSH 服务状态)
[1. 尝试直接 SSH 连接](#1. 尝试直接 SSH 连接)
[2. 清理旧的主机密钥](#2. 清理旧的主机密钥)
[3. 重新连接并接受新密钥](#3. 重新连接并接受新密钥)
[四、若 SSH 服务本身未启动怎么办?](#四、若 SSH 服务本身未启动怎么办?)
[1. 启用 SSH 服务(适用于全新系统)](#1. 启用 SSH 服务(适用于全新系统))
[2. 启动并设置开机自启](#2. 启动并设置开机自启)
[3. 检查 SSH 端口监听状态](#3. 检查 SSH 端口监听状态)
[五、补充:VNC 开机自启动配置](#五、补充:VNC 开机自启动配置)
[1. 使用 raspi-config(最简单)](#1. 使用 raspi-config(最简单))
[2. 使用 systemctl 管理(推荐)](#2. 使用 systemctl 管理(推荐))
[3. 手动创建 systemd 服务(自定义分辨率)](#3. 手动创建 systemd 服务(自定义分辨率))
[4. 常用 VNC 管理命令](#4. 常用 VNC 管理命令)
论文投稿:
第二届航空航天工程与材料技术国际会议(AEMT 2026)
大会时间:2026年4月10-12日
大会地点:中国-西安



二、初步排查:网络连通性
1. 检查 IP 地址段是否一致
执行 ipconfig(Windows)或 ifconfig(Linux/Mac)查看本机 IP:
-
本机 IP:
172.27.xxx.100 -
树莓派 IP:
172.27.xxx.129
✅ 结论 :两台设备位于同一 /24 网段,网络基础连通性正常。
2. 测试 ICMP 连通性
bash
ping 172.27.xxx.129
返回正常响应,说明网络物理链路无问题,故障锁定在 SSH 服务层。
三、深入诊断 SSH 服务状态
1. 尝试直接 SSH 连接
bash
ssh pi@172.27.xxx.129
此时出现经典警告:
bash
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...
Offending ED25519 key in C:\\Users\\xxx/.ssh/known_hosts:26
Host key verification failed.
含义 :
SSH 客户端检测到目标主机的公钥与本地 known_hosts 中记录的不一致,可能原因包括:
-
树莓派系统重装(SSH 密钥重新生成)
-
同一 IP 被其他设备占用
-
手动重置了 SSH 服务密钥
2. 清理旧的主机密钥
执行以下命令删除对应 IP 的旧密钥记录:
bash
ssh-keygen -R 172.27.xxx.129
或手动编辑 C:\Users\用户名\.ssh\known_hosts,删除包含该 IP 的行。
3. 重新连接并接受新密钥
再次执行 SSH 连接:
bash
ssh pi@172.27.xxx.129
系统会提示是否接受新的主机密钥,输入 yes 即可。
四、若 SSH 服务本身未启动怎么办?
如果 ping 通但 SSH 无响应(或端口未监听),需在树莓派本地(接显示器/键盘)执行以下操作:
1. 启用 SSH 服务(适用于全新系统)
-
方法一:SD 卡法
将 SD 卡插入电脑,在
boot分区新建空文件ssh(无扩展名),重新上电即可自动启用 SSH。 -
方法二:raspi-config
bashsudo raspi-config # 选择 Interface Options → SSH → Yes
2. 启动并设置开机自启
bash
sudo systemctl enable ssh
sudo systemctl start ssh
3. 检查 SSH 端口监听状态
bash
sudo netstat -tlnp | grep :22
五、补充:VNC 开机自启动配置
为了远程桌面管理,VNC 也是常用工具。以下是几种设置开机自启的方式。
1. 使用 raspi-config(最简单)
bash
sudo raspi-config
# Interface Options → VNC → Yes
2. 使用 systemctl 管理(推荐)
安装 RealVNC:
bash
sudo apt update
sudo apt install realvnc-vnc-server realvnc-vnc-viewer
启用服务:
bash
sudo systemctl enable vncserver-x11-serviced
sudo systemctl start vncserver-x11-serviced
3. 手动创建 systemd 服务(自定义分辨率)
创建启动脚本 /usr/local/bin/startvnc.sh:
bash
#!/bin/bash
vncserver :1 -geometry 1920x1080 -depth 24
赋予执行权限:
bash
sudo chmod +x /usr/local/bin/startvnc.sh
创建服务文件 /etc/systemd/system/vnc.service:
bash
[Unit]
Description=VNC Server
After=graphical.target
[Service]
Type=simple
ExecStart=/usr/local/bin/startvnc.sh
User=pi
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用并启动:
bash
sudo systemctl daemon-reload
sudo systemctl enable vnc.service
sudo systemctl start vnc.service
4. 常用 VNC 管理命令
-
查看会话:
vncserver -list -
停止会话:
vncserver -kill :1 -
修改密码:
vncpasswd
六、总结与经验
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 无法 ping 通 | 网络不通、IP 改变 | 检查网络配置,扫描网段 |
| ping 通但 SSH 连接失败 | SSH 服务未启动、防火墙拦截 | 启用 SSH,检查防火墙规则 |
| 主机密钥警告 | 系统重装或 IP 冲突 | ssh-keygen -R 清理旧密钥 |
| 同一网络但不同 IP 段 | 虚拟机/容器网络隔离 | 确保处于同一广播域 |
本次排错的核心在于:
-
分层排查:从网络层 → 传输层 → 应用层逐步缩小范围
-
关注安全警告:主机密钥变更不是错误,而是保护机制
-
善用工具 :
ping、ssh -v、netstat、systemctl是基本排错法宝
希望这篇文章能帮助遇到类似问题的同学快速定位并解决 SSH 连接故障,也欢迎在评论区交流更多树莓派实践心得。