解决多个 Git 账户共存问题
Git 的管理工具要求每个 Git User 需要生成一对密钥,公钥和私钥。然后把公/私钥放置于:
用户/.ssh/id_rsa
用户/.ssh/id_rsa.pub
并且将公钥注册于基于 Git 的代码托管库,类似Github。
当用户用 Git 来管理项目的时候,就是通过生成的公钥和私钥来认证用户的合法性。
默认情况下,多个 Git 账户无法在一台机器上协调工作。但通过配置也是可以解决共存问题。有以下两种方式:
- 在 ssh config 文件中定义 Host
- 使用 ssh-add
在 ssh config 文件中定义 Host
在 用户/.ssh
创建 config 文件。(如果有就修改,没有则创建)
写入对每个 Git 账户使用独自的 ssh 密钥的配置:
.ssh/config 注释说明
Host 别名
HostName 域名或 ip
User 登陆服务器用的账号
Port 端口号(默认22,可以不填,如果服务器修改了 ssh 登录端口号,此处需要修改)
IdentityFile 密钥文件的位置
配置.ssh/config
Host home.github.com
HostName github.com
User inadarei
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa_home
Host work.github.com
HostName github.com
User inadarei
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa_work
这样不同的 Git 账户会使用不同的密钥,但前提是这些密钥都已经按照 config 文件中的配置要求正确放置和命名。
配置git仓库
git remote add origin git@work.github.com
需要把 Git 的配置更改过来,其中 github.com 更换为 work.github.com,这样它会找到对应的 key 来登录。
使用 ssh-add
ssh-agent -s
ssh-add ~/.ssh/id_rsa
可能会遇到的问题
以下是使用 Git Bash 执行
$ ssh-keygen -t rsa -C 'yourname@mail.com' -f id_rsa_yourname
$ ssh -T git@github.com
Warning: Permanently added 'github.com,192.30.252.131' (RSA) to the list of known hosts.
Permission denied (publickey).
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-7DLTiXwwx9cI/agent.13188; export SSH_AUTH_SOCK;
SSH_AGENT_PID=12892; export SSH_AGENT_PID;
echo Agent pid 12892;
$ eval $(ssh-agent)
Agent pid 13284
$ ssh-add ~/.ssh/id_rsa_example_2
Identity added: /d/Users/test/.ssh/id_rsa_example_2 (/d/Users/test/.ssh/id_rsa_example_2)
$ ssh-add ~/.ssh/id_rsa_example_2
Could not open a connection to your authentication agent
参考
Using Multiple SSH Keys with Github
配置多个git远程仓库的ssh-Key切换
多个平台git共存
搭建通过 ssh 访问的 Git 服务器
git生成ssh key及本地解决多个ssh key的问题