passwd: Have exhausted maximum number of retries for servic、ssh用普通用户登录输入密码正确但是登录却提示被拒绝问题解决,su到root报错

passwd: Have exhausted maximum number of retries for servic

场景说明

  • 新建用户的时候,一般能用一个复杂密码修改一次,后面就修改失败了。
[root@paas-core01 ~]# echo 'xzhuaiweiedgewznjkxtXZ(^^)01' | passwd --stdin xz_tyng
Changing password for user xz_tyng.
passwd: all authentication tokens updated successfully.
[root@paas-core01 ~]#
[root@paas-core01 ~]# echo 'TyNgxzxzXXXJSBorale2' | passwd --stdin xz_tyng
Changing password for user xz_tyng.
passwd: Have exhausted maximum number of retries for service
[root@paas-core01 ~]#
[root@paas-core01 ~]# echo "TyNgxzxzXXXJSBorale2" | passwd --stdin xz_tyng
Changing password for user xz_tyng.
passwd: Have exhausted maximum number of retries for service
[root@paas-core01 ~]# echo root | passwd --stdin xz_tyng
Changing password for user xz_tyng.
passwd: Have exhausted maximum number of retries for service
[root@paas-core01 ~]#
  • 网上说,可以用chpass来修改,我这依然也是不行滴。。。
[root@paas-core01 ~]# echo xz_tyng:xz_tyng | chpasswd
BAD PASSWORD: is too simple
BAD PASSWORD: is too simple
BAD PASSWORD: is too simple
chpasswd: (user xz_tyng) pam_chauthtok() failed, error:
Have exhausted maximum number of retries for service
chpasswd: (line 1, user xz_tyng) password not changed
[root@paas-core01 ~]# echo xz_tyng:root123 |chpasswd
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: it is too simplistic/systematic
chpasswd: (user xz_tyng) pam_chauthtok() failed, error:
Have exhausted maximum number of retries for service
chpasswd: (line 1, user xz_tyng) password not changed
[root@paas-core01 ~]#

问题解决

场景1

  • 上面这种情况其实就是/etc/pam.d/system-auth文件中做了限制【比如密码复杂度这样】,导致出现上面的情况,最简单的解决方法就是找一台正常的虚拟机,将/etc/pam.d/system-auth文件中的内容全部拷贝到当前问题虚拟机中的/etc/pam.d/system-auth配置文件中即可【但如果是生产环境不建议这么做,因为合规要求会修改/etc/pam.d/system-auth这个文件。】

  • 另外一种情况,确定/etc/passwd/etc/shadown文件权限没问题,正常情况如下
    如果有-i-a,执行:chattr -i /etc/shadow这样将其删除。

[root@paas-core01 ~]# lsattr /etc/passwd /etc/shadow
--------------e----- /etc/passwd
--------------e----- /etc/shadow
[root@paas-core01 ~]#

确定没有多余权限,接着往下看

场景2 【万能方法】

  • 首先,/etc/pam.d/system-auth做过修改,一定要保证其要修改的用户密码足够复杂。
  • passwd: Have exhausted maximum number of retries for servic这个报错其实意思就是你当前设置的密码最近已经使用过,请重新设置。
    万能解决方法,其实就是将我们设置过的密码给删了【删除该用户新建同样的效果】,再重新定义密码就行了。
  • 所有用户历史密码会记录到一个文件中/etc/security/opasswd,把它清空,再重新设置密码,问题基本上都能得到解决
    如我这将xz_tyng用户行信息删除【删除wq保存】,再重新修改密码,问题解决。
[root@paas-core01 ~]# cat /etc/security/opasswd
root:0:1:$6$vgdPSu0RskWF4aAu$kjSw4nhgzfxhg/LynRm2xEHb9YwfDYXv6f./64RNWaA6lmwmATGJ8apTvrMdO3n1yj7dt40Mc7Dh98woLrbbZ.
xz_tyng:5100:1:$6$eC9g3pG4mfaA5wyy$7dy0P.Sj2Ghtz2YenDBxmoIGW.QLYeXx0PFpjRBZl7zQLEBCpm4iUpcbUoIhklT2IRZsN2JhSSKarc7lIzgYY1
[root@paas-core01 ~]#
[root@paas-core01 ~]# echo 'xzhuaiweiedgewznjkxtTyNg(^^)1' |passwd --stdin xz_tyng
Changing password for user xz_tyng.
passwd: all authentication tokens updated successfully.
[root@paas-core01 ~]#

ssh用普通用户登录输入密码正确但是登录时却提示被拒绝问题解决

报错说明与测试

  • 首先,这是一个定制系统,用户提供的镜像我们创建的虚拟机。

  • 我用工具通过普通用户登录,就会报错【和密码错误一样的情况】
    在这里插入图片描述

  • 测试
    在虚拟机内部,能通过普通用户su切换到该用户,证明密码没问题。

[root@paas-core01 ~]# su - xz_tyng
Last login: Thu Feb 16 17:17:51 CST 2023 on pts/1
Last failed login: Thu Feb 16 17:29:27 CST 2023 from 4.5.201.126 on ssh:notty
There were 5 failed login attempts since the last successful login.
[xz_tyng@paas-core01 ~]$ su - xz_tyng
Password:
Last login: Thu Feb 16 17:29:30 CST 2023 on pts/1
Last failed login: Thu Feb 16 17:29:30 CST 2023 from 4.5.201.126 on ssh:notty
There was 1 failed login attempt since the last successful login.
[xz_tyng@paas-core01 ~]$

日志报错提示

  • 查看日志
    一个窗口执行tail -f /var/log/messages,新开一个窗口再次通过该用户登录。
[root@paas-core01 ~]# tail -f /var/log/messages
Feb 16 17:35:18 paas-core01 sshd[57466]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=1.2.183.225  user=xz_tyng
Feb 16 17:35:21 paas-core01 sshd[57466]: Failed password for invalid user xz_tyng from 1.2.183.225 port 62640 ssh2
Feb 16 17:35:30 paas-core01 sshd[57466]: error: Received disconnect from 1.2.183.225 port 62640:0:  [preauth]
Feb 16 17:35:30 paas-core01 sshd[57466]: Disconnected from invalid user xz_tyng 1.2.183.225 port 62640 [preauth]
Feb 16 17:35:59 paas-core01 su[59454]: (to paas) paas on pts/1
Feb 16 17:35:59 paas-core01 su[59454]: pam_unix(su-l:session): session opened for user paas(uid=1000) by paas(uid=0)
Feb 16 17:36:06 paas-core01 su[59663]: (to xz_tyng) paas on pts/1
Feb 16 17:36:06 paas-core01 su[59663]: pam_unix(su-l:session): session opened for user xz_tyng(uid=5100) by paas(uid=1000)
Feb 16 17:37:10 paas-core01 su[59663]: pam_unix(su-l:session): session closed for user xz_tyng
Feb 16 17:37:11 paas-core01 su[59454]: pam_unix(su-l:session): session closed for user paas
Feb 16 17:37:34 paas-core01 sshd[63415]: User xz_tyng from 1.2.183.225 not allowed because not listed in AllowUsers
Feb 16 17:37:37 paas-core01 sshd[63415]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=1.2.183.225  user=xz_tyng
Feb 16 17:37:39 paas-core01 sshd[63415]: Failed password for invalid user xz_tyng from 1.2.183.225 port 59219 ssh2
Feb 16 17:37:51 paas-core01 sshd[63415]: error: Received disconnect from 1.2.183.225 port 59219:0:  [preauth]
Feb 16 17:37:51 paas-core01 sshd[63415]: Disconnected from invalid user xz_tyng 1.2.183.225 port 59219 [preauth]
Feb 16 17:38:47 paas-core01 sshd[1058]: Accepted password for paas from 1.2.183.225 port 64970 ssh2
Feb 16 17:38:47 paas-core01 sshd[1058]: pam_unix(sshd:session): session opened for user paas(uid=1000) by (uid=0)
^C
[root@paas-core01 ~]#
  • 日志中出现 Failed password for invalid user xz_tyng from 1.2.183.225 port 62640 ssh2
    ssh登录有提示invalid user【无效用户】,无效用户,这不是扯犊子嘛,系统内都可以切,这用户怎么可能无效。

  • 所以我们现在可以知道原因了,ssh登录有问题,那么肯定是ssh的配置文件中限制死了。
    进入ssh配置文件/etc/ssh/sshd_config看看是否有AllowUsers【这个就是限制允许登录用户的行】

问题解决

  • 好家伙,可以看到,这个镜像中定制了只允许:paas sftpuser用户登录,其他用户一律不能登录。
[root@paas-core01 ~]# cat /etc/ssh/sshd_config | grep AllowUser
AllowUsers paas sftpuser 
[root@paas-core01 ~]#
  • 解决方法很简单,在该行添加我们创建的普通用户,然后重启sshd服务就行了。
[root@paas-core01 ~]# cat /etc/ssh/sshd_config | grep AllowUser
AllowUsers paas sftpuser xz_tyng
[root@paas-core01 ~]#
[root@paas-core01 ~]# systemctl restart sshd
[root@paas-core01 ~]#

su - root 报错

报错说明

  • 普通用户su - 到root的时候会提示 su: Authentication failure ,如下
[root@xz-ywbp-03 pam.d]# su - xz_tyng
Last login: Mon Nov  1 07:13:51 UTC 2021 from 10.233.201.126 on pts/0
[xz_tyng@xz-ywbp-03 ~]$ su -
Password:
[xz_tyng@xz-ywbp-03 ~]$ su -
Password:
su: Authentication failure
[xz_tyng@xz-ywbp-03 ~]$

解决方法

  • 我这只说做合规导致的普通用户不能su到root
    • 1、/etc/pam.d/su 文件看看下面这句,如果没注释,就注释掉【或者将需要su的用户加入到whell组里】
      auth requiredpam_whell.so use_uid
    • 2、恢复/etc/pam.d/system-auth这个文件,这个文件也会对用户做些限制,最直接的方法就是恢复到之前备份的文件,如果之前没有备份,找一台全新的虚拟机,把该文件内容复制过来即可【做之前先记得备份限制的文件】
    • 一般来说上面2个方法做了普通用户都能su到root了,如下,业务方就是做了限制导致普通用户不能su到root
[root@xz-ywbp-03 ~]# cd /etc/pam.d/
[root@xz-ywbp-03 pam.d]# ls
chfn  config-util  fingerprint-auth     login  passwd         password-auth-ac  postlogin     remote   runuser-l       smartcard-auth-ac  smtp.postfix  su    sudo-i  system-auth     system-auth_bak          system-auth.bak20221202  vlock
chsh  crond        fingerprint-auth-ac  other  password-auth  polkit-1          postlogin-ac  runuser  smartcard-auth  smtp               sshd          sudo  su-l    system-auth-ac  system-auth.bak20220118  systemd-user
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# cp su su.bak0519
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# vi su
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# # 只是注释了auth requiredpam_whell.so use_uid,不行
[root@xz-ywbp-03 pam.d]# su - xz_tyng
Last login: Mon Nov  1 07:13:51 UTC 2021 from 10.233.201.126 on pts/0
[xz_tyng@xz-ywbp-03 ~]$ su -
Password:
[xz_tyng@xz-ywbp-03 ~]$ su -
Password:
su: Authentication failure
[xz_tyng@xz-ywbp-03 ~]$ logout
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# 
[root@xz-ywbp-03 pam.d]# cp system-auth system-auth.bak0519
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# cp system-auth.bak system-auth
cp: cannot stat ‘system-auth.bak’: No such file or directory
[root@xz-ywbp-03 pam.d]#
[root@xz-ywbp-03 pam.d]# cp system-auth_bak system-auth
cp: overwrite ‘system-auth’? y
[root@xz-ywbp-03 pam.d]# # 恢复system-auth文件,可以了
[root@xz-ywbp-03 pam.d]# su - xz_tyng
Last login: Fri May 19 15:49:02 UTC 2023 on pts/1
[xz_tyng@xz-ywbp-03 ~]$ su -
Password:
Last login: Fri May 19 15:47:39 UTC 2023 from 1.2.3.225 on pts/1
Last failed login: Fri May 19 15:49:15 UTC 2023 on pts/1
There were 2 failed login attempts since the last successful login.
[root@xz-ywbp-03 ~]#
  • 如果上面还是不行再查看/etc/login.defs 文件 是不是有下面一句SU_WHEEL_ONLY yes。如果存在,注释掉.。
### SSH 登录失败问题分析 遇到 `Permission denied (publickey)` 的错误通常表明客户端无法通过公钥认证成功访问服务器。以下是可能的原因以及对应的解决方案: #### 可能原因及解决方法 1. **SSH密钥未正确配置** 如果服务器端没有加载用户的私钥或者公钥,则可能导致权限被拒绝。需要确认 `.ssh` 文件夹中的 `id_rsa` 和 `id_rsa.pub` 是否存在并正确设置[^1]。 2. **Git 安装路径下的 SSH 配置文件修改** 对于 Windows 用户,如果使用的是 Git Bash 或者其他基于 Git 的工具链,可以通过调整其内部的 SSH 配置来解决问题。具体操作是在 Git 安装目录下进入 `etc/ssh` 文件夹内的 `ssh_config` 文件中添加以下内容: ```plaintext Host * IdentityFile ~/.ssh/id_rsa HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa ``` 此外还需要确保这些算法支持旧版本 RSA 密钥[^2]。 3. **Root 用户登录限制** 很多 Linux 发行版默认禁用了 Root 用户直接通过 SSH 登陆的功能以提高安全性。可以在 `/etc/ssh/sshd_config` 中查找或新增如下参数并将值设为 yes 后重启服务生效: ```bash PermitRootLogin yes PasswordAuthentication no AuthorizedKeysFile .ssh/authorized_keys ``` 修改完成后记得执行命令刷新更改效果: ```bash systemctl restart sshd ``` 若仍然存在问题可考虑切换至普通用户su 到超级管理员身份运行必要指令[^3]。 4. **Known_hosts 缓存冲突** 当前机器曾经连接过目标 IP 地址但当时使用的可能是不同的设备或者是虚拟机重装等原因造成指纹不匹配也会引发此类警告信息。此时可以删除本地缓存记录重新建立信任关系即可恢复正常通讯状态。 删除方式有两种:一种手动编辑打开 `%USERPROFILE%\.ssh\known_hosts` 查找对应条目删掉;另一种更简便的方法就是清空整个文件内容然后再次发起请求让系统自动更新最新数据。 5. **CentOS 特定环境调试技巧** 在某些情况下即使完成了上述所有步骤依旧会碰到障碍。这时建议启用详细日志模式查看具体的交互过程从而定位确切位置所在。例如利用 `-v`, `-vv`, 或者最高级别 `-vvv` 参数获取更多细节帮助判断实际状况如何发展变化。 命令实例演示如下所示: ```bash ssh -vvv git@yourserveripaddress ``` 以上便是针对您提到的情况所提供的全面解析方案集合,请按照实际情况逐一排查直至彻底消除异常现象为止! ```python import os print(os.getcwd()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

҉人间无事人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值