如何一台机器同时使用多个git秘钥
如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。
起因
公司一个 gitlab 代码仓库;个人一个 github 代码仓库;
然后最近 github 本来就慢,被河蟹之后丢包更严重了。所以为了不影响使用,又加了个国内码云 gitee;
正巧重新配了下 仓库秘钥,做个记录方便之后换机器、重置系统再用。
生成秘钥
为了方便说明,我假设需要重新配置全部秘钥。如果机器上已经配置好其它秘钥,直接生成新的秘钥(注意不要覆盖
已经生成好的秘钥)
使用终端 ssh命令 生成 rsa秘钥
ssh-keygen -t rsa -C “邮箱地址1” -f ~/.ssh/id_rsa_github
-f 为秘钥存放地址。默认为当前路径 。一直回车下去,过程如下:
此时~/.ssh目录下会生成2个文件,分别对应 公钥id_rsa_github.pub 和 私钥id_rsa_github 。
将公钥告诉git服务器
打开公钥文件,复制里面内容。
vim id_rsa_github.pub
登陆 git服务器 (这里以github举例)。 github账户 > setting选项 > SSH and GPG keys,把 公钥字符串 粘贴里面的key输入框中,保存退出即可。
通过命令 ssh -T git@github.com 测试,
如果出现上图提示,说明秘钥添加成功。
配置多个秘钥
我们重复步骤 生成秘钥、将公钥告诉git服务器 生成并配置新的秘钥后。 在 .ssh 目录下面新建 config文件,文件内容如下: 配置以下内容:
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
user coderdao
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
user coderdao
复制代码
HostName 指定秘钥使用域名,就能区分不同域名之间使用秘钥不同
保存后,测试 ssh -T git@github.com、ssh -T git@gitee.com
上图所示,即配置多个git秘钥配置成功
配置项目多个git仓库
方式一
进入项目目录下执行
$ git remote add github ******
$ git remote add gitee ******
输入上面代码后,再输入
$ git remote -v
terminal中打印
gitee https://gitee.com/***.git (fetch)
gitee https://gitee.com/***.git (push)
github https://github.com/***.git (fetch)
github https://github.com/*** (push)
推送代码
$ git pull gitee master
$ git push gitee master
方式二
1.添加关联
git remote set-url --add origin 仓库地址
2.推送
$ git remote -v
$ git push origin master:master
好处,只需要推送一次就可以到两个仓库
其他问题
如果配置 config 文件后,未能生效。本地 git 软件的配置存在缓存,可使用以下命令判断秘钥是否生效:
$ cd ~/.ssh
$ eval $(ssh-agent)
Agent pid 3593
$ exec ssh-agent bash
$ ssh-add ~/.ssh/id_rsa_github
Identity added: /c/Users/Administrator/.ssh/id_rsa_github
$ ssh -T git@github.com
Hi coderdao! You've successfully authenticated, but GitHub does not provide shell access.