如何在同一台电脑上管理多个Github账号的仓库

本文详细记录了怎么在一台电脑上通过SSH的config配置管理多个Github账号,让不同账号的仓库并处。

Github的仓库管理是通过ssh协议进行的,公钥在全网不能重复,也就是说两个Github账号不能共用同一套ssh密钥,因此想要在同一台电脑上管理多个Github账号仓库,就要给每一个账号都生成一套ssh密钥,通过config配置文件指定对应仓库使用的密钥,详细操作步骤记录如下。

生成SSH密钥

这里以两个账号为例,首先生成两套SSH keyssh-keygen命令应该是系统标配了,如果没有这个命令,安装Git后也应该一并安装了,执行下面的命令生成第一套密钥。

ssh-keygen -t rsa -f ~/.ssh/id_rsa_1 -C "your_email@example.com"

参数含义如下:

-t:指定要创建的密钥类型,可以使用:“rsa1″(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)。

-f指定密钥输出的文件名。

-C: 是一个注释,一般填邮箱地址。

一路按回车执行默认操作,在c盘的Users/Leon/.ssh目录中生成私钥id_rsa_1和公钥id_rsa_1.pub

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Leon/.ssh/id_rsa_1
Your public key has been saved in /c/Users/Leon/.ssh/id_rsa_1.pub
The key fingerprint is:
SHA256:1T8JChoEbNurK0TBSvF0o4Yc2oDRIOrFU/lh0io6b/k your_email@example.com
The key's randomart image is:
+---[RSA 3072]----+
|*B.o.=+          |
|*+X *+.+   .     |
|++.X o* o . o    |
|o +.o..+ o . o . |
| o. . ..S .   +  |
| o.   .        . |
| .o ..           |
|  .+.            |
|  ..oE           |
+----[SHA256]-----+

第二套密钥如法炮制,同样的目录中生成id_rsa_2id_rsa_2.pub,此时这个目录中应该有两套密钥,4个文件。

配置SSH config

配置SSH的config文件,指定Git命令使用的是哪一套密钥。这个文件一般位于用户home目录的.ssh文件夹中,可以执行下面的命令查看。

cat ~/.ssh/config

如果没有这个文件,就手动创建一个。

touch ~/.ssh/config

编辑config文件,输入下面的配置项。

Host labno3
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_1
    IdentitiesOnly yes

Host ming102
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_2
    IdentitiesOnly yes

配置项的含义解释如下:

Host: 执行SSH命令的时候如何匹配到这个配置。

  • *,匹配所有主机名。
  • *.example.com,匹配以 .example.com 结尾。
  • !*.dialup.example.com,*.example.com,以 ! 开头是排除的意思。
  • 192.168.0.?,匹配 192.168.0.[0-9] 的 IP。

HostName:是真实的主机名,默认值为命令行中输入的值,可以是IP。
User: 是登录的用户名。
IdentityFile: 私钥文件路径。
identitiesOnly: 指定 ssh 只能使用配置文件指定的 identity 和 certificate 文件通过 ssh 命令行验证身份。

这里的重点在Host,指定对应的私钥就是通过匹配host来完成。

配置Gihub SSH keys

把公钥分别配置给Github账号SSH keys,路径在Settings>SSh and GPG keys,点击New SSH key添加公钥。

Title里随便输入名称,只是用来标识用,比如Win10Key里面输入SSH密钥里的公钥,就是以.pub结尾的文件的内容,就像这样,注意不要用Windows自带的编辑器打开文件,可能会混入特殊字符。

创建Github仓库

Github上创建一个仓库,这里我命名为test,测试下效果。

在本地创建一个test文件夹,在里面初始化一个本地Git仓库

git init

配置用户名和邮箱,这个是推送代码的用户名和邮箱,跟对应的账号需要是一致的。

git config user.name labno3
git config user.email labno3@126.com

添加远程仓库是重点,远程URL的地址的更改是关键,Github给的仓库的地址前缀是git@github.com,这里把git@github.com替换成labno3,因为在前面SSH Config配置文件里配置了一个Hostlabno3的配置,这个Github账号的SSH key的公钥和labno3配置项的私钥是一对的,这样ssh就可以通过匹配labno3来找到这个配置项

执行下面的命令添加远程仓库:

git remote add origin labno3:labno3/test.git

创建一个README.md文件,然后提交推送到远程仓库。

echo "# test" >> README.md
git add README.md
git commit -m "first commit"
git branch -M main
git push -u origin main

输出结果如下,说明一切正常。

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 210 bytes | 210.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To labno3:labno3/test.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

另外一个账号也按照同样的操作。

到这里在同一个电脑上管理不同的github账号的任务就完成了,原理就是利用ssh的config配置,通过Host匹配让ssh使用正确的私钥去和Github交互,如果我这里有什么遗漏和错误,或者您有什么疑问,欢迎在下面留言讨论。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 如何在同一台电脑上管理多个Github账号的仓库

赞 (1)

评论

1+5=