因为在一台电脑上既有公司的项目,也有自己私有的项目,所以要配置多个ssh key,来维持提交项目的方便性。
Mac电脑生成ssh key的教程就很简单来,使用如下命令即可。
$ ssh-keygen -t rsa -C "youremail@email.com"
默认在/Users/你的电脑用户名/.ssh 文件夹下生成 id_rsa (私钥)和 id_rsa.pub(公钥) 。
如果是就生成一个ssh key,一路回车就好,没必添加密码为自己添麻烦。
生成第二个或第n个key时,手工追加一个名字和原来默认的id_rsa区分开就好了,像我就在如下自定义key的名字为[id_rsa_gitee]
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): id_rsa_gitee
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_gitee.
Your public key has been saved in id_rsa_gitee.pub.
The key fingerprint is:
SHA256:1muQaF4W/+O8oOz9KCCEO6Ia3BUy55NNo8EvhjCsLIg xxx@yyy.com
The key's randomart image is:
+---[RSA 2048]----+
| |
|. . |
| + + = o. |
|= + B O..= |
|E. + OooS o |
|+ + +o++ . o |
|oo o ... + o |
|.. ..+ = . |
|o .+.o.=. |
+----[SHA256]-----+
这样在/Users/你的电脑用户名/.ssh 文件夹下,就会新生成 id_rsa_gitee 和 id_rsa_gitee.pub两个文件,如下图所示:
然后手工添加config文件,我的配置如下:
Host xxx
HostName 公司私服url
User git
IdentityFile ~/.ssh/id_rsa
Host gitee
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa_gitee
然后把两个pub文件里的key,各自添加到对应的ssh key 配置中去,这个设置很简单,此处不在赘述。
然后用ssh -T xxx 和 ssh -T gitee ,都有了友好提示,代码key生效了。
公司私服clone ssh的工程都是可以成功,就是码云的代码clone不下来,报错如下:
xxx:OpenWorkspace xxx$ git clone -b dev git@gitee.com:Goalone/testBuding.git
Cloning into 'testBuding'...
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
无权限,然后查了一下资料,发现是 没有把这个刚生成的 id_rsa_gitee 的密钥加到密钥链中。
使用ssh-add 查询
zxxx:.ssh yyy$ ssh-add -l
The agent has no identities.
果真没有,然后用 ssh-add 加入进去就可以了。
zxxx:.ssh xxx$ ssh-add ~/.ssh/id_rsa_gitee
Identity added: /Users/xxx/.ssh/id_rsa_gitee (/Users/xxx/.ssh/id_rsa_gitee)
xxx:.ssh zxxx$ ssh-add -l
2048 SHA256:1muQaF4W/+O8oOz9KCCEO6Ia3BUy55NNo8EvhjCsLIg /Users/xxx/.ssh/id_rsa_gitee (RSA)
并且用 ssh-add -l 能查到,再进行clone 就可以成功了。
参考链接:http://shinancao.github.io/2016/12/18/Programming-Git-1/
http://man.linuxde.net/ssh-add