SSH 认证顺序 (Too many authentication failures)

1. 问题

最近升级了一波系统,顺带着更新了 openssh-client,使用 ssh 连接服务器的时候报错,提示 Too many authentication failures

wqy@wqy-PC:/home/common/Downloads$ ssh [email protected]
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 [email protected] -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 的值设置调大。

这样做的缺点是:

  1. 如果服务器很多,工作量很大
  2. 每次登录都要执行 6 次失败的秘钥认证和一次密码认证,这些秘钥认证是完全没有必要的
  3. 有些服务器可能不允许修改这些配置

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。

你可能感兴趣的:(SSH 认证顺序 (Too many authentication failures))