如何在同一台电脑上连接不同的github账号

多个github(或者gitlab 等)账号该怎么管理呢?

Posted by p0pfan on July 20, 2016

当有多个github账号的时候,我该怎么办?

1.需求来源

在公司实习的时候,我想趁着空闲的时间弄一下自己的项目。所以就需要让公司的电脑可以通过ssh来连接自己的github。

2.问题

由于公司的电脑上已经通过ssh-keygen -t rsa -C 'email'设置了与公司的电脑的连接。那么问题就来了,如何在同一台电脑上连接不通的github账号?

3. 解决办法

  1. 得到两个github账号的SSH key
    • 指令:ssh-keygen -t rsa -C "your-email-address"
      • NOTE:上面指令执行后,会出现一个提示:Enter file in which to save the key (路径.ssh/id_rsa): *** 。此时你可以输入一个名字来命名你存储的key的名称(*** 星号处输入)。如:work 或者personal
      • 当然,你需要将相应的公钥放置到对应的github下面
  2. 使用ssh-add -l查看是否将私钥添加到了设置当中。
    • 如果没有,则使用ssh-add xxx来添加私钥。其中xxx表示私钥的名称。
  3. .ssh文件下添加一个config文件。其中内容为:
Host NAME1
    HostName 对应的域名(eg:github.com)
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/私钥的名称

Host NAME2
    HostName 对应的域名(eg:github.com)
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/私钥的名称
  • NOTE
    • config的文件配置需要注意的是NAME1和NAME2;
    • NAME1和NAME2配置的不和对应的HOSTNAME对应的话,
      • 比如说NAME1work;HostNamegithub.com,那么在clone的时,如果使用git clone git@github.com:xxx时可能会出现没有权限克隆的问题。但是使用git clone git@work:xxx则可以正常。 (这个没准是个别情况,我没有做过多的研究,刚好使用的时候碰到了,就说明一下。

4. 测试连接情况

  • 指令:ssh -T git@xxx 或者ssh -T v git@xxx (其中xxx表示config中的NAME1或者NAME2,其实你们也可以测试一下xxx写HostName的情况,按理说应该也是可以的。但是也有可能出现我上面note说明的情况)
  • 成功的标志是:Hi ***! You've successfully authenticated, but GitHub does not provide shell access.
参考连接:

https://help.github.com/articles/generating-an-ssh-key/ http://www.cnblogs.com/foxracle/archive/2012/07/20/2599830.html http://xuyuan923.github.io/2014/11/04/github-gitlab-ssh/

图片地址:

http://i.blogs.es/ea935a/yeswecode/450_1000.jpg