关联Github远程仓库时用ssh-keygen创建密钥的问题

       把本地仓库跟远程的Github仓库关联的时候需要先创建密钥对,并把公钥告诉Github,自己保留私钥,当时是看的下面这篇文章做的:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000

       但是在命令行提示Enter file in which to save the key (/Users/you/.ssh/id_rsa):    的时候,我没有直接输入回车(后面两步还是直接回车了,否则要密码管理还是很不方便的),而是输入了自定义的一个名字xjr_rsa,当时我以为是给密钥起个名字,所以没太在意。没想到的是,这个产生的密钥并没有存放在~/.ssh目录下,因为我当时用ssh-keygen的时候是在本地仓库目录,所以这个密钥就放在了本地仓库里,然后我尝试用ssh -T [email protected] 去连接的时候就会说Permission denied(publickey),就算我把这个密钥复制到了~/.ssh目录下也不行。这时我想到,我只是用命令产生了一个自定义名字的密钥对,假如我还有好多个这样的密钥对放在~/.ssh目录下,那我去连接github的时候它怎么知道要选哪个呢?如果当初我是直接回车的话,ssh-keygen会产生叫做id_rsa和id_rsa.pub的密钥对,并自动存放在~/.ssh目录下,一切都是默认的话那还好说,既然自定义了一个新的密钥,那就应该得让命令知道我要用哪个密钥对,于是查了一下,在Github关于ssh常见问题区里面看到下面这个链接:

https://help.github.com/articles/generating-ssh-keys/

发现有个叫做ssh-agent的命令,估计是用来管理密钥的,按照上面网址的方法,先启动ssh-agent,再用ssh-add命令添加自定义的密钥,重新连接Github,OK,果然一切搞定!

       另外,把生成的公钥放到Github账户下面以后,我们在命令行使用ssh -T [email protected] 命令时,回显的是添加了这个公钥的Github账户的名字,也就是说把这个公钥添加到哪个Github账户下面,Github会有一个映射,我们用私钥做验证的时候Github就知道是哪个用户在尝试访问Github。同时,也说明一个公钥只能添加到一个Github账户下面,不能同时添加到多个Github用户下面,否则就无法知道到底是哪个用户在尝试连接Github了。


你可能感兴趣的:(关联Github远程仓库时用ssh-keygen创建密钥的问题)