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"公众号。