git 指定自己的sshkey

在服务器上生成ssh-key以后,需要把公钥放在github上,但是,这个公钥只能放在一个账户里,如果放在第二个账户里,就会提示这个key已经被用了,这是前提

 

一个可能的场景是这样的:

  你们公司有好几个项目都托管在git上,然后有一台公用的服务器,这时候,你的同事在服务器上搞了一套ssh-key,添加到他的项目里用于ssh验证拉代码了,这时候你也用到这台服务器,然后把公钥往自己的项目里加的时候,发现加不进去了,这时候最暴力的解决方法就是,你重新生成一套加在自己的仓库里,但是这么搞的化,你同事之前添加的那个肯定是不能用了,然后他发现自己的不能用了,上了服务器一看key被改了,他又重新生成一下,然后你又不能用了,如此反复,相爱相杀。

 

明智的解决方法是这样的,让git去服务器拉代码的时候使用不同的ssh-key就可以了,具体做法如下:

1.生成你自己的ssh-key

ssh-keygen -t rsa -P '' -f ./id_rsa_myself

这个命令会在当前目录生成  id_rsa_myself 和id_rsa_myself.pub 的一对,特别注意的是一定要指定生成文件的存放路径,要么去默认的地方了(~/.ssh/),那就把你同事的给覆盖了

 

2.这时候就可以添加公钥了,把 id_rsa_myself.pub里的东西添加到github上,这些基本操作就不说具体步骤了

 

3.把 id_rsa_myself 这个私钥存起来,放哪里都无所谓,也可以直接放在 ~/.ssh/ 目录里,我习惯放在自己家目录下,比如  /home/xiaol/ssh/id_rsa_myself

 

4.在~/.ssh/目录常见一个config文件,内容如下

cd     ~/.ssh/
vi config

Host myself
    HostName bitbucket.org
    User git
    PreferredAuthentications publickey
    IdentityFile /home/xiaol/ssh/id_rsa_myself

 

5. 这个config和刚才存起来的id_rsa_myself需要权限为600(~/.ssh/系统生成的就是600,改就好了,不改报权限问题)

chmod 600 ~/.ssh/config
chmod 600 /home/xiaol/ssh/id_rsa_myself

 

配置过程就完成了

 

下面说下使用

配置之前你clone代码:

git clone git@bitbucket.org:xxx/xxx.git

配置之后你clone代码:

git clone git@myself:xxx/xxx.git

 至于为什么,你对着新建的那个config文件琢磨琢磨就知道了

 

这种解决方法不影响你同事,config中没配的时候会用 ~/.ssh/下的文件验证

 

posted @ 2019-08-22 20:00  413Xiaol  阅读(4841)  评论(0编辑  收藏  举报