由于需要,申请了多个github
账号,但是都是在同一台电脑上操作,原来只有一个账号进行ssh
操作时,推送没有遇到什么问题,现在有多个账号了,推送的时候就有点懵逼了,下面是根据网上的资料来进行多个账号,在本地配置ssh-key
的操作过程。
单个账号的 ssh-key 配置可查看文章:github设置添加ssh
一、本地生成不同账号的秘钥信息
ssh-keygen -t rsa -C "xxx1@xx.com" #账号1
ssh-keygen -t rsa -C "xxx2@xx.com" #账号2
邮箱替换成自己github账号的绑定邮箱。
运行上面命令后会让你输入一个文件名,用于保存生成的 SSH key 代码,如:
CopyGenerating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
如果是只有一个账号的时候,可以默认保存。
多个账号的时候可以在后面输入自己自定义的文件名,用来区分不同账号生成的秘钥。
输入文件名后,回车继续往下会提示你输入密码,可直接回车不输入密码。
多个账号都是同样的操作,操作结束后,就会在 ~/.ssh
目录下生成多个秘钥。
二、将公钥添加到不同的github账号上
分别登陆自己github账号,然后将生成的公钥(.pub结尾的文件)添加到对应的账号下:
Settings —> SSH and GPG keys
三、配置 config 文件
单个账号时不需要配置,默认即可,多个账号时进行配置。
查看 ~/.ssh 文件下是否存在 config 文件,不存在的话新建一个,填写对应的配置信息:
Host coder.github.com // 别名
HostName github.com // 服务器地址
User javage // github用户名
IdentityFile ~/.ssh/coder // 对应的秘钥地址
Host tester.github.com
HostName github.com
User tester
IdentityFile ~/.ssh/tester
四、添加 key 信息到 ssh-agent 中
因为默认只读取的默认生成的 id_rsa,为了让他能读取到修改过后的秘钥信息,需要添加到 ssh-agent中:
ssh-add ~/.ssh/coder // 对应的秘钥文件
ssh-add ~/.ssh/tester
在执行命令中如果提示:
Could not open a connection to your authentication agent.
需要执行下如下命令:
ssh-agent bash
然后继续执行之前的命令即可。
五、测试是否配置正确
ssh -T git@coder.github.com
ssh -T git@tester.github.com
这里使用的是别名来进行访问,git 可以通过 config 配置的信息来请求对应的账号。
- 请求成功提示:
$ ssh -T git@coder.github.com
Hi javaGe! You\'ve successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@tester.github.com
Hi testerggf! You\'ve successfully authenticated, but GitHub does not provide shell access.
- 克隆项目:
$ git clone git@tester.github.com:testerggf/studygit.git
Cloning into \'studygit\'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
- 拉取项目:
git pull git@coder.github.com:javage/javaGe.github.io.git
- 推送项目:
git push git@coder.github.com:javage/javaGe.github.io.git