思路
ssh 方式链接到 Github/GitLab,需要唯一的公钥,如果想同一台电脑绑定两个Github/GitLab 帐号,需要两个条件:
能够生成两对 私钥/公钥push 时,可以区分两个账户,推送到相应的仓库
解决方案:
生成 私钥/公钥 时,密钥文件命名避免重复设置不同 Host 对应同一 HostName 但密钥不同取消 git 全局用户名/邮箱设置,为每个仓库独立设置 用户名/邮箱
操作方法
查看已有密钥Mac 下输入命令ls ~/.ssh/,看到id_rsa与id_rsa_pub则说明已经有一对密钥。如下图
生成新的公钥,并命名为id_rsa_2(保证与之前密钥文件名称不同即可,文件名最好有意义,否则写后面的配置的时候写错文件名,我的文件名是id_rsa_ljy)ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"如下图
上面命令执行完,~/.ssh下就出现了"_ljy"结尾的文件
在.ssh文件夹下新建config文件并编辑,令不同 Host 实际映射到同一HostName,但密钥文件不同。Host 前缀可自定义,例子中ieit# default Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa # two Host ieit.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_2新建config的图跟上面3.的图一样。之后我把上面的代码拷过来,修改了Host和HostName(我把Host和HostName都写一样的)。具体他们的含义如下 :#Host myhost(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)[注意下面有缩进] #User 登录用户名(如:git) #HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org) #Port 服务器open-ssh端口(默认:22,默认时一般不写此行 #IdentityFile 证书文件路径(如~/.ssh/id_rsa_*)