使用情境:当你需要一个git管理你的公司的项目gitlab,另一个git管理你的gitHub的时候,你会发现新建一个ssh 会覆盖掉原来的ssh,并导致原来的失效。以下直接上干活:
新建一个git ssh
- 设置公司对应的Git的user name和email:
$ git config --global user.name "wangzhicheng"
$ git config --global user.email "wangzhicheng@qq.com"
- 生成ssh key过程
ssh-keygen -t rsa -c/Users/baiju/.ssh/id_rsa_gitlab
然后三个回车,会生成
Your identification has been saved in /c/Users/baiju/.ssh/id_rsa_gitHub.
Your public key has been saved in /c/Users/baiju/.ssh/id_rsa_gitHub.pub.
The key fingerprint is:
SHA256:OixK6dUuiB+L2jUARjfnqqNLwEVeT7ZEYX0MUJ/gAv0 baiju@长城
The key's randomart image is:
+---[RSA 2048]----+
| . + +oO=+o |
|. + = B.o.oo. |
|.. o . +...o |
|o.. . .E |
|.... S |
|. .o o . |
| =+.= = |
|+=o*.+ . |
|*o* .. |
+----[SHA256]-----+
- 添加密钥到ssh:ssh-add 文件名
关联多个ssh key
- 使用上述的方法创建gitHub对应的公钥和私钥
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/baiju/.ssh/id_rsa): /c/Users/baij/.ssh/id_rsa_gitHub //此处为文件名
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/baiju/.ssh/id_rsa_gitHub.
Your public key has been saved in /c/Users/baiju/.ssh/id_rsa_gitHub.pub.
The key fingerprint is:
SHA256:s7cEn1/6BSOhBdYhM6xrbfYZK9GmNC/TTrMg6XkcbHg baiju@长城
The key's randomart image is:
+---[RSA 2048]----+
| .*... |
| ..=. |
| . o |
| . o . |
| S=... o |
| +*E.+. o |
| .+B*Xo+. .|
| . =B=*= . |
| o..==.. |
+----[SHA256]-----+
- 查看系统ssh-key代理,执行如下命令
$ ssh-add -l
Could not open a connection to your authentication agent.
如果发现上面的提示,说明系统代理里没有任何key,执行如下操作
exec ssh-agent bash
如果系统已经有ssh-key 代理 ,执行下面的命令可以删除
$ ssh-add -D
- 添加密钥到ssh-agent
$ ssh-add ~/.ssh/id_rsa_gitLab
$ ssh-add ~/.ssh/id_rsa_gitHub
依次执行上面三条shell 把两个私钥添加到 ssh-key 代理里面
- 打开github ssh 管理页面把 对应的公钥提交保存到代码管理服务器 (.pub 结尾)
- 在 .ssh 目录创建 config 配置文件,git下执行shell
touch config
- 然后可以测试一下,是否连接成功
ssh -T git@github.com
如果失败,可以用这个方法
ssh -vT git@github.com
补充一下
如果之前有设置全局用户名和邮箱的话,需要unset一下
git config --global --unset user.name
git config --global --unset user.email
然后在不同的仓库下设置局部的用户名和邮箱
比如在公司的repository下git config user.name "yourname"
git config user.email "youremail"
在自己的github的仓库在执行刚刚的命令一遍即可。