一台电脑如何配置多个github账户
有一个github账户时很简单,不管采用ssh还是https方式提交都没问题,但多个账户时最好采用ssh.
现在的情况是:以前只有一个账户,全部都采用https的方式,现在多了一个账户,该怎么办?
下面是我的做法,是通用的.
如何区别使用的哪种方式
很简单,2种方法
- 在github界面查看:当初是怎样克隆的就是哪种方式.
- 命令查看:
- ssh
1
2
3git config --list
...
remote.origin.url=git@github.com:jimolonely/myshell.git - https
1
2
3git config --list
...
remote.origin.url=https://github.com/jimolonely/myshell.git
- ssh
如何使用ssh方式
这个就很容易了.分为6步.
去掉以前的key cache,可有可无,因为可能有其他的ssh key
1
2ssh-add -D # 删除所有
ssh-add -l生成key
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[jimo@jimo-pc .ssh]$ ssh-keygen -t rsa -C "xxx@foxmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jimo/.ssh/id_rsa): /home/jimo/.ssh/id_rsa_jimo
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jimo/.ssh/id_rsa_jimo.
Your public key has been saved in /home/jimo/.ssh/id_rsa_jimo.pub.
The key fingerprint is:
SHA256:a95OgBQ9DBkNw4RM8NKi/NXbbQmJyjHYiwk2UaO+i7k xxx@foxmail.com
The key's randomart image is:
+---[RSA 2048]----+
| .*.+BO |
| oo+ oo= |
| oo o . . |
|o..oo.... . |
|.* . =.oSo |
|. = = = ooo . |
| . + + .o..+ |
|... o o. |
|Eo ..o |
+----[SHA256]-----+
同理生成另外一个.添加到ssh
1
2
3
4
5
6
7
8
9[jimo@jimo-pc .ssh]$ ssh-add id_rsa_code
Identity added: id_rsa_code (id_rsa_code)
[jimo@jimo-pc .ssh]$ ssh-add id_rsa_jimo
Identity added: id_rsa_jimo (id_rsa_jimo)
[jimo@jimo-pc .ssh]$ ssh-add -l
2048 SHA256:UtdQCo1Ca7Gf4ITAsyxxXpjaLXan28CAv1O2QBylWTc id_rsa_code (RSA)
2048 SHA256:a95OgBQ9DBkNw4RM8NKi/NXbbQmJyjHYiwk2UaO+i7k id_rsa_jimo (RSA)将公钥(id_rsa_code.pub里的)复制到github账户ssh里
配置,在~/.ssh/config下配置:
1
2
3
4
5
6
7
8
9
10
11
12[jimo@jimo-pc .ssh]$ cat config
Default github account
Host github.com
HostName github.com
User git
IdentityFile /home/jimo/.ssh/id_rsa_jimo
second account
Host github-code
HostName github.com
User git
IdentityFile /home/jimo/.ssh/id_rsa_code测试:
1
2
3
4
5[jimo@jimo-pc .ssh]$ ssh -T github.com
Hi jimolonely! You've successfully authenticated, but GitHub does not provide shell access.
[jimo@jimo-pc .ssh]$ ssh -T github-code
Hi mycodefarm! You've successfully authenticated, but GitHub does not provide shell access.
如何使用很关键
到这里,克隆或则添加origin的时候需要注意,使用config里自己定义的Host.
比如: 创建了一个新账户,叫test,本来克隆该用
1 | git clone git@github.com:mycodefarm/test.git |
但现在需要使用github-code替代 github.com
1 | git clone git@github-code:mycodefarm/test.git |
另外遇到:
1 | [jimo@jimo-pc test]$ git commit -m 'first' |
需要在每个项目单独配置用户名和邮箱,但首先删除全局配置:
1 | $ git config --global --unset user.name |
结果
现在可以混用https和ssh提交了.
但最好全部改为ssh,因为如果使用了credential.helper store,会把密码存储在~/.git-credentials下,不太好.
附:使用全局用户名密码的方式
1 | sudo apt-get install git -y |
配置保存密码
方法1
1 | git config --global credential.helper store |
方法2
在~目录下创建.gitconfig文件,写入:
1 | [credential] |