美文网首页
同一台电脑配置不同的ssh key

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

作者: CoderCyl | 来源:发表于2021-07-04 16:14 被阅读0次

    如今 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 文件中配置的域名。

    相关文章

      网友评论

          本文标题:同一台电脑配置不同的ssh key

          本文链接:https://www.haomeiwen.com/subject/xlzmultx.html