1. 问题
最近升级了一波系统,顺带着更新了 openssh-client
,使用 ssh 连接服务器的时候报错,提示 Too many authentication failures
。
wqy@wqy-PC:/home/common/Downloads$ ssh root@172.17.0.2
Received disconnect from 172.17.0.2 port 22:2: Too many authentication failures
Disconnected from 172.17.0.2 port 22
2. 分析
Too many authentiction failures
表示多次认证失败,通过给命令加上 -v
选项,发现认证方式是秘钥,注意到其中一行输出显示,认证方法为 publickey,gssapi-keyex,gssapi-with-mic,password
, 因此想到这个问题的原因是默认的认证顺序被修改了。
wqy@wqy-PC:/home/common/Downloads$ ssh root@172.17.0.2 -v
OpenSSH_7.7p1 Debian-2, OpenSSL 1.0.2o 27 Mar 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 172.17.0.2 [172.17.0.2] port 22.
debug1: Connection established.
debug1: identity file /home/wqy/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/wqy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wqy/.ssh/id_dsa type -1
......
......
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
sshd 的配置文件 /etc/ssh/sshd_config
里有一个配置项,MaxAuthTries 6
,表示最大认证尝试次数为 6。由于本机上的秘钥刚好有 6 个,因此发生了 6 次秘钥认证失败后提示 Too many authentication failures
。
3. 解决方案
3.1 修改服务器配置
最直观的一种方法是修改服务器配置,将 MaxAuthTries
的值设置调大。
这样做的缺点是:
- 如果服务器很多,工作量很大
- 每次登录都要执行 6 次失败的秘钥认证和一次密码认证,这些秘钥认证是完全没有必要的
- 有些服务器可能不允许修改这些配置
3.2 修改客户端配置
在 /etc/ssh/ssh_config
里配置认证方法的顺序,将密码认证放在秘钥认证之前。
PreferredAuthentications password,publickey,gssapi-keyex,gssapi-with-mic
4. License
本作品采用知识共享 署名-非商业性使用-相同方式共享 2.5 中国大陆 许可协议进行许可。要查看该许可协议,可访问 http://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 或者写信到 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA。
网友评论