描述:当sshd服务器端设置了MaxAuthTries的值时,在输入次数达到时,会拒绝再次尝试,但在有ssh证书的情况下,ssh客户端会默认先使用已有的ssh公钥进行认证,这个失败次数一样会影响到MaxAuthTries这个值,例如在sshd服务器端设置MaxAuthTries值为3,而ssh客户端有2个ssh公钥,在这个时候在进行ssh连接时只要输入错误一次密码就会出现"Too many authentication failures"错误提示


解决:

1、直接修改sshd的MaxAuthTries更大
直接修改服务器端的/etc/ssh/sshd_config中的MaxAuthTries的值更大,但这会给系统带来安全的问题,况且有的服务器本身也是客户端不能够直接控制的;


推荐:

1.开启账户名和密码连接

  • 优点: 提供了更安全的认证机制,减少了直接输入错误密码的可能性。
  • 步骤:
    1. 确保用户已拥有 accounts 姓名认证的密钥。
    2. 修改 SSH 配置文件,启用账户名和密码连接:
      echo "AccountAuthentication yes" >> /etc/ssh/sshd_config
      echo "StrictKeyChecking yes" >> /etc/ssh/sshd_config
      
    3. 用户在连接时输入 accounts 姓名认证的密钥,而不是密码,系统会自动验证用户的身份。


2.挂载盘,重新配置一下密钥

#先把新卷挂载到实例 mount

cd .ssh
vim auth.._key #删除掉除密钥之外的内容

cd /mnt/etc/ssh/
vim sshd_config
#将以下两个值改成
PasswordAuthentication yes
PermitRootLogin yes

cd  #回到根目录
chroot/mnt
passwd
输入密码


最佳实践与注意事项

  1. 密钥管理原则

    • 客户端仅保留必要密钥,避免\~/.ssh目录冗余。
    • 使用ssh-agent管理密钥链,避免自动尝试所有密钥。
  2. 安全与便利的平衡

    • 优先通过客户端配置限制尝试次数,而非修改服务端。
    • 若必须开启密码登录,建议配置Fail2ban防御暴力破解。
  3. 兼容性验证

    • CentOS 7需检查客户端NumberOfPasswordPrompts参数(默认3次),可能覆盖服务端设置。


自我判定

#判定描述自我判定(是/否)
1在各搜索引擎中是否能找到知识信息(包括但不限于Google、百度、Bing)
2是否需要代码集成开发