同一台电脑配置不同的ssh key

如今 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 "[email protected]"

回车,然后在下一步的提示中指定 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 "[email protected]"

指定名称为 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 [email protected]
ssh -T [email protected]

如果看到输出 Hi XXX! You've successfully,那就说明配置成功了。

在这配置文件中有一些细节需要注意到,在讲到 gitee + gitee 的配置方式时再讲。

7、添加代理

ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_personal

8、拉取/推送代码

正常的使用git clone [email protected]:用户名/项目.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 [email protected] # 输出 Hi Panhoo1... 说明配置成功
ssh -T [email protected] # 输出 HiPanhoo2... 说明配置成功

这里还有一个需要注意的点:

如果在验证的时候提示错误 load key ... invalid format类似的错误,可能需要修改一下 config 配置文件中的 IdentityFile,因为有些 Git 版本的不同造成些差异。

看看 IdentityFile 后面指定的公私钥路径有没有 .pub 后缀,有的话去掉,没有的话就加上试试。

在拉取/推送代码的配置中也和上面有稍微的不同,在一般的配置中,克隆代码直接使用

git clone [email protected]:用户名/项目.git

但是在 config 中指定了不同的 Host 后,这个源 URL 就有些不同了。

克隆例中公司项目命令

git clone [email protected]:用户名/项目

克隆例中个人项目命令

git clone [email protected]:用户名/项目

通过对比可以看到,克隆命令中的域名是我们在 config 文件中配置的域名。

你可能感兴趣的:(同一台电脑配置不同的ssh key)