zoukankan      html  css  js  c++  java
  • Git使用两个用户名两个公钥链接同一个Git服务器

    同篇文章以Gitee举例, 支持国产, 首先关联一下我的另外一篇文章: 

    在码云上添加公钥时提示不允许重复添加(实际上当前公钥数为0)

    在这篇文章中, 我后续有补充解释为什么会出现我之前没有弄明白的这个提示, 是因为时间间隔久远我用手机号和邮箱分别注册了一个gitee账户.

    而我为了ssh方便, 自始至终保存了一套公钥私钥, 而她被用在了我之前注册的那个账号上, 于是在新的账号上提示不允许重复添加.

    很容易理解, 她重复的作用域是整个gitee服务器.

    要解决这个问题, 我势必要产生两套公钥私钥, 那么问题来了, 如何让他自动选择应该使用的那一套呢?

    网上查了资料, 写一个ssh的config, 参考了这篇文章:

    https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/

    就是在.ssh文件夹下面新建一个config文件, 里面的格式大概这样:

    Host server1
         HostName server1.cyberciti.biz
         User nixcraft
         Port 4242
         IdentityFile /nfs/shared/users/nixcraft/keys/server1/id_rsa
    

    依葫芦画瓢搬过来目测不太好使, 因为他通篇介绍的是如何区别不同的服务器使用不同的密钥, 而没有介绍如何在同一个服务器使用不同的密钥.

    然后我在GitHub上看到了另外一篇文章:

    https://gist.github.com/jexchan/2351996

    这个很符合我的胃口, 描述的是如何对同一个服务器使用两套密钥:

    #account1
    Host gitee.com-jerryqii
         HostName gitee.com
         User git
         IdentityFile ~/.ssh/id_rsa
    
    #account2
    Host gitee.com-jerryqi
         HostName gitee.com
         User git
         IdentityFile ~/.ssh/id_rsa1
    

    然后在你的仓库设置远程地址:

    git remote set-url origin git@gitee.com-jerryqi:jerryqi/nb.git
    

    大喜, push成功了!

    然而这也让我非常困惑, [git@gitee.com-jerryqi], 域名能够写成gitee.com-jerryqi这种格式的? 还带一个用户名? git的协议到底是怎样的?

    StackExchange给了我答案, 请参考这篇文章:

    https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames

    总结下来就是, 上面我提到的gitee.com-jerryqi并不是一个域名, 而是host的一个别名.

    当没有config文件存在的时候, host的别名就是域名, 这个很好理解.

    而当有config文件存在的时候, 他会通过host去找HostName以及IdentityFile.

    上述造成我误解的原因还是在于我使用了[域名]-[用户名]的关系, 实际上他可以是任何名字, 只需要在config中进行相同的修改即可.

    完毕!

  • 相关阅读:
    C#_数据访问类查询 和 属性扩展
    C#_0913 完整修改删除、实体类和数据访问类
    webform基础
    TreeView, 数据导出
    无边框窗体,tiner控件
    容器,打印设置
    多窗体,菜单工具栏
    公共控件
    winform
    数据访问类查询
  • 原文地址:https://www.cnblogs.com/jerryqi/p/11724849.html
Copyright © 2011-2022 走看看