SSH 认证顺序 (git 公钥配置出错)
2018-09-06 本文已影响0人
WqyJh
1. 问题
之前解决一个 SSH 认证顺序 导致的问题时,修改了 ssh 的认证顺序,没想到又引入了新的问题。
上次的解决方案是在 /etc/ssh/ssh_config
里配置认证方法的顺序,将密码认证放在秘钥认证之前。
PreferredAuthentications password,publickey,gssapi-keyex,gssapi-with-mic
但是 git 使用私钥连接服务器的时候,会要求输入密码,并且在三次输错密码后,可以连接成功。显然这是认证顺序的问题,如果先使用公钥认证,就不会有这个问题。
wqy@wqy-PC:~$ ssh -T git@192.168.9.155
git@192.168.9.155's password:
Permission denied, please try again.
git@192.168.9.155's password:
Permission denied, please try again.
git@192.168.9.155's password:
Welcome to GitLab, Qiying Wang!
2. 分析
这两次遇到的问题的本质是不同场景下,应该优先使用秘钥登录还是密码登录的问题。
使用密码登录服务器的时候,应该优先使用密码登录。
使用 git 的时候,应该优先使用秘钥登录。
3. 解决方案
修改 /etc/ssh/ssh_config
... # other configuration
PreferredAuthentications password,publickey,gssapi-keyex,gssapi-with-mic
Match User git
PasswordAuthentication no
由于我更多使用密码登录服务器,因此我设置密码登录优先于秘钥登录。
但是对于 git 用户,我禁止它用密码登录。
4. License
本作品采用知识共享 署名-非商业性使用-相同方式共享 2.5 中国大陆 许可协议进行许可。要查看该许可协议,可访问 http://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 或者写信到 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA。