有时候我们需要在设备上同时使用多个
git
代码托管平台来管理代码,比如github
,gitlab
...,这时光靠生成一份 SSH Key 已经不能满足需求,所以下面介绍方法如何使用,以及遇到的一些问题的解决方法
1.打开终端,切换到系统的 SSH 目录下
cd ~/.ssh
2.生成自己 Github 的 SSH Key
ssh-keygen -t rsa -C "#自己Github账号" -f github_rsa
3.输入 生成的 rsa 文件 密码,可以回车跳过
按照相同的步骤,可以创建 gitlab
,gerrit
,gitee
上的 SSH key。
然后下好之后,在.ssh
文件里,ls
一下看看有没有 config
文件,没有的话,执行 :
vim config
正常操作下,以 github
,gitlab
为例,按照下面这段格式来写就可以了:
# github
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_rsa
Host
是别名。只是为了区分 github
、gitlab
等,为了方便使用,建议和HostName
一致,这样在 clone git
的时候不用考虑修改 hostname
。
接着测试一下是否已经打通,使用 ssh -T #Host
(Host
就为config
里的 Host
):
ssh -T github
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
github 成功
ssh -T gitlab.com
Welcome to GitLab, @xxx!
gitlab 连接成功
如果只是为了管理自己的账号,上面这些操作完就可以了。但是如果涉及到公司的账号,对应的域名可能就会有所改变。比如 gitlab
上的公司域名可能是 168.168.168.10:8080,那在 config
文件里,就需要进行对应的修改:
# gitlab
Host gitlab.com
Port 8080
HostName 168.168.168.10
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_rsa
注意这里加上了端口号 Port
这样也就能进行正常的操作了。
可能有些人在这步的时候还会出现 xxx@gitlab.com:Permission denied (publickey).
的问题, 设置一下默认 user
即可:
# gitlab
Host gitlab.com
Port 8080
HostName 168.168.168.10
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_rsa
User git
如果像 gerrit
,User
需要填 gerrit
帐号的用户名
修改 ssh key
文件密码:
ssh-keygen -p
这时会出现: Enter file in which the key is (/Users/#username/.ssh/id_rsa):
这时需要填上要修改密码的文件,不填系统默认修改 id_rsa
这个文件,接着回车设置密码即可。
针对不同的git管理,在对应的本地仓库里,使用对应的邮箱:
git config --local user.email #对应的邮箱
如果要设置全局邮箱,:
git config --global user.email #对应的邮箱
注意,邮箱设置成和 git
管理平台的后台设置的一样的