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。

上一篇下一篇

猜你喜欢

热点阅读