树莓派3(Raspbian Stretch Lite)重启后SSH登录异常问题
解决树莓派Stretch Lite重启后SSH异常的问题
我之前在树莓派3跑Stretch Lite的时候,也碰到过类似的SSH重启抽风问题,结合你给出的配置和ssh -v调试日志,咱们一步步来排查解决:
先看你的调试日志关键点
从ssh -v的输出能看到,连接已经建立了(debug1: Connection established.),但后续没有继续握手的日志,说明问题大概率出在sshd服务初始化、系统资源、网络栈或者配置细节上,而不是简单的网络不通。
针对四种异常场景的针对性排查
1. 始终提示连接被拒绝
这种情况基本是sshd没起来,或者端口22被搞了:
- 要是能接显示器键盘(或者串口)本地登录,先查sshd状态:
systemctl status sshd,看是不是显示active (running) - 再查端口22有没有被监听:
netstat -tulpn | grep :22,要是看不到sshd进程在监听,那就是服务没启动起来 - 顺便确认下开机自启:
systemctl is-enabled sshd,得是enabled状态才行
2. PuTTY输密码后无响应 / 能登录但输命令没反应
这俩情况大多是系统资源被榨干了(比如内存跑满、CPU被占死),或者PAM认证模块出了问题:
- 本地登录后用
top看看负载,要是内存接近100%,可能是OOM killer把相关进程干掉了,或者系统卡成狗了 - 你的
sshd_config开了UsePAM yes,可以瞅瞅/etc/pam.d/sshd里有没有奇怪的配置,比如是不是加了什么耗时的外部认证模块
3. PuTTY连接后黑屏,连密码提示都没有
这种一般是SSH握手到一半卡住了,大概率是GSSAPI认证或者MTU的锅:
- 先试试在PuTTY里关GSSAPI:点Connection -> SSH -> Auth,取消勾选"Attempt GSSAPI authentication";用命令行的话就加参数:
ssh -v -o GSSAPIAuthentication=no root@10.24.1.52 - 再检查下网络MTU:树莓派上
ifconfig看MTU值,改成1400试试:ifconfig eth0 mtu 1400(无线的话换wlan0)
通用修复方案,大概率能解决问题
结合你的sshd_config配置,我建议做这些调整:
1. 优化sshd配置,关掉没用的功能
打开/etc/ssh/sshd_config,改这几个地方:
- 加一行
UseDNS no:禁用反向DNS解析,这是SSH连接慢或者卡住的常见元凶 - 显式加上
PasswordAuthentication yes:你当前配置里没写,默认是yes,但显式写上更稳妥,避免默认值变了坑你 - 暂时关掉
X11Forwarding yes:要是不需要远程图形,关了能减少sshd的资源占用和初始化步骤 - 建议把
PermitRootLogin yes改成PermitRootLogin prohibit-password,用密钥登录不仅更安全,还能避免密码认证的潜在问题
改完后重启sshd:systemctl restart sshd,再确认开机自启:systemctl enable sshd
2. 砍掉不必要的开机服务,减轻启动负载
Stretch Lite默认开了些没用的服务,开机时抢资源,可能导致sshd启动异常:
- 看看哪些服务开机自启:
systemctl list-unit-files --type=service | grep enabled - 禁用不需要的,比如蓝牙(不用的话):
systemctl disable bluetooth,还有avahi-daemon(不需要 zeroconf的话):systemctl disable avahi-daemon
3. 检查SD卡和文件系统
重启后出问题也可能是SD卡坏了导致文件系统错误:
- 执行文件系统检查:
fsck /dev/mmcblk0p2(记得先卸载分区,或者进单用户模式弄) - 看看系统日志里的sshd错误:
cat /var/log/syslog | grep sshd,找启动时的报错信息
4. 升级系统和sshd
Stretch是比较老的版本了,可能有已知bug,升级下试试:
apt update apt upgrade -y systemctl reboot
最后验证
每次改完重启树莓派,多测几次SSH连接,看看四种异常是不是都消失了。要是还不行,换张SD卡试试,排除硬件损坏的可能。
内容的提问来源于stack exchange,提问作者Marcin Zdunek
相关产品推荐
相关产品推荐

