1 步骤
我们假设原来在~/.ssh
目录下已经生成了一个密钥对:
id_rsa id_rsa.pub
1.1 生成第二个key
接下来我们生成第二个ssh key:
ssh-keygen -t rsa -C "yourmail@gmail.com"
这里不要一路回车,我们自己手动填写保存路径:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Gary/.ssh/id_rsa): /c/Users/Gary/.ssh/id_rsa_github
<剩下两个直接回车>
这里我们用id_rsa_github
来区别原有密钥对,避免被覆盖。
完成之后,我们可以看到~/.ssh
目录下多了两个文件,变成:
id_rsa
id_ras.pub
id_rsa_github
id_rsa_github.pub
known_hosts
1.2 打开ssh-agent
这里如果你用的github官方的bash,用:
ssh-agent -s
如果是其他的,比如msysgit,用:
eval $(ssh-agent -s)
略过这一步的话,下一步会提示这样的错误:Could not open a connection to your authentication agent.
若执行ssh-add /path/to/xxx.还是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:
ssh-agent bash
1.3 添加私钥
ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa_github
如果提示文件或目录不存在,就使用绝对地址。
1.4 创建config文件
在~/.ssh
目录下创建名为config
的文件。
添加一下内容:
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitee # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github
其中,Host
和HostName
填写git服务器的域名。
IdentityFile
指定私钥的路径。
如果在Linux系统下提示错误:Bad owner or permissions on /home/gary/.ssh/config
说明config权限过大,chmod
命令调整:
$ chmod 644 ~/.ssh/config
然后在github和gitee码云上添加公钥即可,这里不再多说。
1.5 测试
然后用ssh命令分别测试:
ssh -T git@github.com
2 调试
如果到这里你没有成功的话,别急,教你解决问题的终极办法--debug
比如测试github:
ssh -vT git@github.com
-v 是输出编译信息,然后根据编译信息自己去解决问题吧。
就我自己来说一般是config里的host那块写错了。
3 关于用户名
如果之前有设置全局用户名和邮箱的话,需要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的仓库在执行刚刚的命令一遍即可。
这样就可以在不同的仓库,已不同的账号登录。