排查步骤
- 登录阿里云后台,使用账号密码远程连接登录服务器
- 使用
systemctl status sshd
查看 sshd 服务的状态
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-05 18:06:55 CST; 3 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 3431 (sshd)
CGroup: /system.slice/sshd.service
└─3431 /usr/sbin/sshd -D
Jun 09 10:26:17 iz6we80u6r96x7oq8wia3bz sshd[4838]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jun 09 10:26:19 iz6we80u6r96x7oq8wia3bz sshd[4838]: Failed password for root from 222.186.31.166 port 10626 ssh2
Jun 09 10:26:19 iz6we80u6r96x7oq8wia3bz sshd[4838]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jun 09 10:26:21 iz6we80u6r96x7oq8wia3bz sshd[4838]: Failed password for root from 222.186.31.166 port 10626 ssh2
Jun 09 10:26:21 iz6we80u6r96x7oq8wia3bz sshd[4838]: Received disconnect from 222.186.31.166 port 10626:11: [preauth]
Jun 09 10:26:21 iz6we80u6r96x7oq8wia3bz sshd[4838]: Disconnected from 222.186.31.166 port 10626 [preauth]
Jun 09 10:26:21 iz6we80u6r96x7oq8wia3bz sshd[4838]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.186.31.166 user=root
Jun 09 10:30:17 iz6we80u6r96x7oq8wia3bz sshd[4889]: Accepted password for root from 47.96.60.215 port 33171 ssh2
Jun 09 10:30:18 iz6we80u6r96x7oq8wia3bz sshd[4893]: Accepted password for root from 47.96.60.217 port 58050 ssh2
Jun 09 10:30:20 iz6we80u6r96x7oq8wia3bz sshd[4914]: Accepted password for root from 47.96.60.214 port 24312 ssh2
(这是一段废话,可略过)从上面的日志看出 xshell 连接服务器其实走了代理,因为那不是我这台机器的 外网 ip,而且还动态变化,而直接 cmd 执行
ssh root@ip
方式连接,则连接成功,且日志中正确显示我的外网 ip
- 找到故障原因:
pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
,这是因为 PAM 的相关模块策略配置禁止了 uid<1000 的用户进行登录。 - 解决之道:检查以下配置文件,找到相关配置内容并注释
文件名 | 说明 |
---|---|
/etc/pam.d/login | 控制台管理终端对应配置文件 |
/etc/pam.d/sshd | 登录对应配置文件 |
/etc/pam.d/system-auth | 系统全局配置文件 |
最终在
system-auth
中发现如下配置内容并将其注释掉
- 然后,执行
systemctl restart sshd
重启 sshd,再次使用 Xshell 进行连接,连接成功。