虚拟机远程连接报错解决办法
SSH 远程连接 root
用户认证失败问题解决总结
一、问题现象
在使用 ssh root@192.168.163.130
命令尝试从 Ubuntu 主机(root@Ubuntu
)远程连接目标 Ubuntu 主机(192.168.163.130
)的 root
用户时,多次输入密码后均提示 Permission denied, please try again
,/var/log/auth.log
日志显示 authentication failure
、PAM: Authentication failure for root
等认证失败相关信息 。
二、排查与解决步骤
(一)基础信息确认
- 网络连通性:在发起连接的
root@Ubuntu
主机,通过ping 192.168.163.130
测试与目标主机网络连通性,确保网络正常,无丢包等情况,排除网络物理层面的连接问题 。 - 目标主机
root
密码:在目标主机本地(若可操作,如通过物理控制台或已有其他用户登录权限),使用passwd
命令验证或修改root
密码,保证输入的密码为目标主机root
用户的正确密码 。例如,若能本地登录目标主机,执行passwd
重新设置并牢记root
密码 。
(二)目标主机服务端配置检查
-
允许
root
密码登录配置-
登录目标主机(若有其他用户权限,可通过
su - 其他用户
结合sudo
提权;或物理操作目标主机直接登录),编辑 SSH 服务配置文件sudo nano /etc/ssh/sshd_config#或sudo vi /etc/ssh/sshd_config
-
查找
PermitRootLogin
配置项,若其值为prohibit-password
或no
,将其修改为yes
,prohibit-password yes
以允许
root
用户通过密码方式登录;同时查找PasswordAuthentication
配置项,若值为no
,修改为yes
,开启密码验证功能 ,修改后,保存并退出编辑器。PasswordAuthentication yes
-
重启 SSH 服务使配置生效,命令
sudo systemctl restart sshd #或 sudo service ssh restart
-
-
检查用户限制配置:在目标主机的
sshd_config
配置文件中,查看是否存在DenyUsers root
这类禁止root
用户登录的配置,若有则注释掉(行前加#
),之后重启sshd
服务 。 -
PAM 策略检查:查看目标主机 PAM 配置文件
/etc/pam.d/sshd
,检查是否有禁止root
远程登录的策略,如auth required pam_succeed_if.so user != root quiet
,若存在此类限制,注释或删除相关配置行,再重启sshd
服务 。# 禁止 root 远程登录(常见于安全加固) auth required pam_succeed_if.so user != root quiet#重启sshd sudo systemctl restart sshd
(三)客户端侧排查
-
避免密钥干扰:若客户端(
root@Ubuntu
主机 )之前为目标主机配置过 SSH 密钥,可能优先进行密钥验证而非密码验证,可强制指定密码方式连接,命令ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@192.168.163.130
-
清理
known_hosts
缓存:客户端~/.ssh/known_hosts
文件中可能存在影响连接的旧记录,找到对应目标主机(192.168.163.130
)的条目并删除,之后重新尝试连接 。
(四)日志辅助定位
在目标主机实时查看认证日志辅助排查,命令
sudo tail -f /var/log/auth.log
然后在客户端重新发起 ssh
连接,根据日志中报错信息(如 Failed password for root from ...
提示密码错误 、Permission denied (publickey,password)
结合服务端配置排查等 )进一步精准定位和解决问题 。
三、最终解决结果
通过上述一系列步骤,包括确认网络连通性、保证目标主机 root
密码正确、检查并修改 sshd_config
配置(确保允许 root
密码登录、密码验证开启等 )、排查 PAM 策略和客户端侧干扰、利用日志辅助定位等操作,最终解决了 root
用户 SSH 密码登录失败问题,可成功通过 ssh root@192.168.163.130
命令,使用正确密码连接到目标主机 。