ssh问题

2017-10-20  本文已影响36人  星期六1111

问题描述

昨天晚上干了件极蠢的事,因为没有看提示,不小心覆盖了ci上默认的.ssh下的私钥

矛盾点

覆盖原来的私钥之后,之前的一些ssh的配置应该会失效,但出人意料的发现,我再次覆盖私钥后,生成的公钥和之前的公钥是一样的。。。理论上,生成的公钥和私钥是配对的,当生成新的私钥时,公钥会改变才对,但事实上却不是这样

问题解决

Q1:为什么覆盖会生成一样的public key?
A1:因为我实现进行了git config --global user.name 'XX' && git config --global user.email 'XX@qq.com'的配置,由于邮箱是识别的唯一手段,那么自然的,这两者采用同一个邮箱,生成的 public key 也会是同一个。所以,原因就是因为我配置的时候采用相同的邮箱。

Q2: 本来需要做的是多个ssh key的管理,结果失误了,一路回车,正确应该怎么样做呢?
A2:由于采用了不同的邮箱,对不同的服务商进行提交,所以此时我们经常配置的 git config --global 就不能常用了,必须在每个仓库的目录下进行配置自己的用户名、邮箱。基于config文件,原理上就是对 SSH 协议配置 config 文件,对不同的域名采用不同的认证密钥。
正确的做法:

反思

看提示!看提示!看提示!重要的事情说3遍!

血淋淋的教训!在CI 上出现这样的失误真的很可怕

上一篇下一篇

猜你喜欢

热点阅读