VM实例SSH认证次日失效问题求助
SSH认证持续失效问题排查与解决(Node.js环境VM实例)
问题场景
我运行的VM实例仅部署了3个.js文件、配置文件及package.json,前期使用完全正常,但次日突然出现SSH认证失效问题。更换全新SSH密钥后仍无法通过认证,报错信息如下:SSH Authentication has failed. In order to debug, please analyze the /var/log/auth.log file on the target machine using the serial console. Reading the recent serial port output may also be helpful.
已尝试的操作:
- 生成并使用新SSH密钥,认证失败;
- 通过浏览器SSH的「troubleshoot」功能检测,VM及网络状态显示「OK」,但用户权限加载无限期卡住;
- 新建VM实例解决疑似损坏问题,但次日仍出现相同SSH故障。
核心排查与解决步骤
1. 优先通过串行控制台查看认证日志
利用云平台提供的串行控制台(无需SSH即可登录),执行以下命令定位故障根源:
# 查看最近50条认证日志 tail -n 50 /var/log/auth.log # 过滤SSH服务相关错误 grep "sshd" /var/log/auth.log | tail -n 30
重点关注以下日志内容:
.ssh目录或authorized_keys文件的权限错误(比如权限过宽导致SSH拒绝读取)sshd_config配置被修改(比如禁用了公钥认证)- 用户账户异常(比如账户被锁定、所属组变更)
2. 修复SSH权限与配置
如果日志指向权限或配置问题,执行以下操作:
- 修复用户目录下的SSH文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown -R ${USER}:${USER} ~/.ssh
- 检查SSH服务核心配置:
grep -E "PubkeyAuthentication|AuthorizedKeysFile|PasswordAuthentication" /etc/ssh/sshd_config
确保PubkeyAuthentication yes,AuthorizedKeysFile路径正确(默认~/.ssh/authorized_keys),修改后重启SSH服务:
systemctl restart sshd
3. 排查Node.js脚本的异常操作
由于实例仅运行Node.js相关内容,需检查是否有脚本意外修改系统配置:
- 查看Node.js进程的资源访问情况:
ps aux | grep node # 检查进程是否访问系统关键文件 lsof -p [Node进程PID] | grep -E "/etc|/home"
- 检查定时任务是否被篡改:
crontab -l ls -la /etc/cron.*
4. 排查云平台层面的自动变更
如果新建实例次日仍出问题,大概率是云平台的自动化策略导致:
- 检查实例是否开启了系统自动更新(可能更新SSH服务后重置配置)
- 确认安全组/防火墙规则未限制SSH端口(默认22)
- 检查是否有云平台配置管理工具在夜间自动修改实例设置
临时应急方案
若暂时无法定位根因,可添加定时任务每日自动修复SSH权限:
crontab -e # 添加以下内容,每天凌晨2点执行修复 0 2 * * * chmod 700 /home/${USER}/.ssh && chmod 600 /home/${USER}/.ssh/authorized_keys && chown -R ${USER}:${USER} /home/${USER}/.ssh
内容的提问来源于stack exchange,提问作者Dinocanid America
相关产品推荐
相关产品推荐

