Git使用ssh方式pull或push,需要部署ssh公钥。如果在一个平台下,比如码云,只有一个账户是没有问题的,但是如果我有两个账户,要在同一台电脑上操作是不允许的,所以有了今天这篇文章。
首先,我们先来看看如何用ssh-keygen 生成公钥
ssh-keygen生成公钥
使用下面的命令就可以生成ssh公钥
ssh-keygen -t rsa -C "chengxulvtu@126.com"
上面的命令是生成了一对公钥/私钥,可以在 ~/.ssh/目录下看到id_rsa.pub,这就是公钥文件。
默认生成的名称为id_rsa,也可以使用下面的命令指定文件名称
ssh-keygen -t rsa -C "chengxulvtu@126.com" -f ~/.ssh/cxlt
添加公钥
复制~/.ssh/cxlt.pub文件的内容,添加到平台,我以码云为例

如上图,在左侧有一个“SSH公钥”的菜单,选中该菜单后,在右侧就会出现添加公钥的地方,将公钥内容粘贴在这里即可。
在Mac下,可以使用下面的命令直接将公钥内容复制到剪贴板,然后就可以直接command+v粘贴了。
cat ~/.ssh/cxlt.pub | pbcopy
现在公钥添加了,但git clone依然会提示访问拒绝。这是因为ssh命令默认只会读取 id_rsa这个私钥,所以对于我们生成的cxlt.pub是读取不到的,怎么解决呢?可以在配置文件中配置。
Config支持多账户
在~/.ssh目录中有一个config文件,没有的话就创建一个。
Host cxlt
HostName git.oschina.net
User git
IdentityFile ~/.ssh/id_rsa_cxlt
IdentitiesOnly yes
Host git.oschina.net
HostName git.oschina.net
User git
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
这是我的config文件,前两个配置是码云的,分别对应我的两个账户,可以理解为一个公司的账户,一个个人的账户。假如源代码的git地址是git@git.oschina.net:cxlt/test.git,如果使用cxlt配置对应的账户获取源代码,就要把git@git.oschina.net改为配置中定义的Host名称,即cxlt:cxlt/test.git,或者git@cxlt:cxlt/test.git也是可以的。
配置user.name和user.email
假如我公司的账户用户名为BobTian,我个人账户的用户名为cxlt,如果不配置局部的user.name和user.email,那么两个账户提交代码时使用的是全局user.name和user.email,这显然是不合适的。
获取源代码后,进入项目目录,使用下面的命令配置
git config user.name cxlt git config user.email chengxulvtu@126.com
然后使用下面的命令查看是否已经添加成功
git config --local -l
这篇文章就讲这些,希望能够帮助到你。
如果有什么问题欢迎扫描下方二维码关注“chengxulvtu"公众号。

