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文件的内容,添加到平台,我以码云为例
Git如何配置多账户-程序旅途

如上图,在左侧有一个“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"公众号。
Git如何配置多账户-程序旅途