SSH 认证顺序 (git 公钥配置出错)

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 有必要先来了解什么是SSH和什么是SSH key。 SSH Secure Shell (SSH) 是一个允许两台电...
    faner阅读 47,496评论 1 48
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,272评论 5 47
  • 回顾这一路走来,自己并没有什么远大的目标。而是一步一步跟着心的指引。 随着自己越来越自知。发现其实自己一直走在正轨...
    清慈阅读 159评论 2 2
  • 在回家的路上很忐忑,这么多天没见小宝了,肯定想抱抱亲亲的,可是呢又觉得在外面好脏,没有洗手又不敢抱他,怕传染疾...
    番茄妈阅读 97评论 0 0