如今 Git 版本管理这么普及,那么我们除了在公司的账户除外,很可能还有一个属于自己的私人账户。如果是使用 ssh 的方式来拉取和提交代码,那么就要配置 ssh key 了。
如果公司账户和个人账户是属于不同的平台,那就比较简单一些,比如公司的是码云,而个人的是 github。下面就分别介绍一下 github + gitee 和 gitee + gitee 的配置。
一、github + gitee 的配置
1、生成公司账户 gitee ssh key
使用ssh-keygen -t rsa -C "用户名,一般是邮箱"
命令生成 ssh key。
ssh-keygen -t rsa -C "company@aa.com"
回车,然后在下一步的提示中指定 ssh key 的路径和文件名。为了方便建议将终端路径 cd 切换到 .ssh 目录下再执行命令生成公私钥。这里指定名称为 id_rsa_company
。
指定了路径和名称后直接一直按回车,就生成了公司 gitee 账户的公私钥了。在 .ssh 目录下可以看到多了 2 个文件,一个是私钥 id_rsa_company,一个是公钥 id_rsa_company.pub,公钥用来添加到 github 或 gitee 网站中的。
2、将公钥添加到 gitee
[站外图片上传中...(image-1b86a8-1625386413618)]
填写标题,然后将 id_rsa_company.pub 中的内容复制到公钥下方的框中,点击确定验证后就可以添加成功了。
3、用同样的方式生成 github 的个人账户公私钥
ssh-keygen -t rsa -C "personal@bb.com"
指定名称为 id_rsa_personal,同样在 .ssh 目录中多了 id_rsa_personal 和 id_rsa_personal.pub 两个文件。
4、添加个人公钥到 github。这里就不再截图了。
5、配置 config 文件。
目录切换到 .ssh 目录中,打开 config目录(如果没有就新建),在 config 文件中配置以下内容
Host gitee.com # 别名,不一定非得是网站的域名
HostName gitee.com # 这里可能是你公司的域名,对应的修改即可
PreferredAuthentications publickey # 认证方式,公钥认证
IdentityFile ~/.ssh/id_rsa_company # 认证文件路径
User Panhoo1 # 用户名
Host github.com # 别名,不一定非得是网站的域名
HostName github.com # 这里可能是你公司的域名,对应的修改即可
PreferredAuthentications publickey # 认证方式,公钥认证
IdentityFile ~/.ssh/id_rsa_personal # 认证文件路径
User Panhoo2 # 用户名
6、验证是否配置成功
ssh -T git@gitee.com
ssh -T git@github.com
如果看到输出 Hi XXX! You've successfully
,那就说明配置成功了。
在这配置文件中有一些细节需要注意到,在讲到 gitee + gitee 的配置方式时再讲。
7、添加代理
ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_personal
8、拉取/推送代码
正常的使用git clone git@gitee.com:用户名/项目.git
二、gitee + gitee 的配置
gitee + gitee 比上面的配置稍微复杂一点,因为不同平台在查找对应配置的时候,根据域名就可以直接在 config 文件中找到,因为每份配置都是唯一的,很容易就查到了。
那么在公司和个人账户都是 gitee 的情况下,那就需要在 config 文件中将它们稍微区分一下了。这就要根据上面配置文件中的 Host 这个来区分了。
生成公私钥等步骤与上面一致,这里就省略了,假设所有生成的文件和上面一致。不同的是 config 文件的配置有点不太一样。
因为两个域名都是 gitee.com,所以就需要从上面提到的 Host 这个别名来区分了。
Host gitee.com # 别名,这里是使用域名
HostName gitee.com # 这里可能是你公司的域名,对应的修改即可
PreferredAuthentications publickey # 认证方式,公钥认证
IdentityFile ~/.ssh/id_rsa_company # 认证文件路径
User Panhoo1 # 用户名
Host gitee.personal.com # 别名,加以区分
HostName gitee.com # 这里可能是你公司的域名,对应的修改即可
PreferredAuthentications publickey # 认证方式,公钥认证
IdentityFile ~/.ssh/id_rsa_personal # 认证文件路径
User Panhoo2 # 用户名
上面 2 个配置的 Host 不一致,这样就区分了他们,不过在验证的时候也有些不同。
ssh -T git@gitee.com # 输出 Hi Panhoo1... 说明配置成功
ssh -T git@gitee.personal.com # 输出 HiPanhoo2... 说明配置成功
这里还有一个需要注意的点:
如果在验证的时候提示错误
load key ... invalid format
类似的错误,可能需要修改一下 config 配置文件中的 IdentityFile,因为有些 Git 版本的不同造成些差异。看看 IdentityFile 后面指定的公私钥路径有没有 .pub 后缀,有的话去掉,没有的话就加上试试。
在拉取/推送代码的配置中也和上面有稍微的不同,在一般的配置中,克隆代码直接使用
git clone git@gitee.com:用户名/项目.git
但是在 config 中指定了不同的 Host 后,这个源 URL 就有些不同了。
克隆例中公司项目命令
git clone git@gitee.com:用户名/项目
克隆例中个人项目命令
git clone git@gitee.personal.com:用户名/项目
通过对比可以看到,克隆命令中的域名是我们在 config 文件中配置的域名。
网友评论