描述:当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.开启账户名和密码连接
- 优点: 提供了更安全的认证机制,减少了直接输入错误密码的可能性。
- 步骤:
- 确保用户已拥有 accounts 姓名认证的密钥。
- 修改 SSH 配置文件,启用账户名和密码连接:
echo "AccountAuthentication yes" >> /etc/ssh/sshd_config echo "StrictKeyChecking yes" >> /etc/ssh/sshd_config - 用户在连接时输入 accounts 姓名认证的密钥,而不是密码,系统会自动验证用户的身份。
2.挂载盘,重新配置一下密钥
#先把新卷挂载到实例 mount cd .ssh vim auth.._key #删除掉除密钥之外的内容 cd /mnt/etc/ssh/ vim sshd_config #将以下两个值改成 PasswordAuthentication yes PermitRootLogin yes cd #回到根目录 chroot/mnt passwd 输入密码
最佳实践与注意事项
密钥管理原则
- 客户端仅保留必要密钥,避免
\~/.ssh目录冗余。 - 使用
ssh-agent管理密钥链,避免自动尝试所有密钥。
- 客户端仅保留必要密钥,避免
安全与便利的平衡
- 优先通过客户端配置限制尝试次数,而非修改服务端。
- 若必须开启密码登录,建议配置Fail2ban防御暴力破解。
兼容性验证
- CentOS 7需检查客户端
NumberOfPasswordPrompts参数(默认3次),可能覆盖服务端设置。
- CentOS 7需检查客户端
自我判定
| # | 判定描述 | 自我判定(是/否) |
|---|---|---|
| 1 | 在各搜索引擎中是否能找到知识信息(包括但不限于Google、百度、Bing) | 是 |
| 2 | 是否需要代码集成开发 | 否 |
