多个Git配置多个ssh密钥
同一台电脑的同一个ssh共钥无法配置到多个github账号。例如公司的电脑ssh公钥配置到公司的github账号后,无法在使用同一个公钥配置个人的github账号。这时候需要生成多个ssh密钥,分别配置给不同的github账户
生成新的ssh key
cd ~/.ssh
ssh-keygen -t rsa -f "test"
-f 给新生成的密钥自定义命名,否则生成的是默认密钥:id_rsa与id_rsa.pub 它会覆盖掉现有的默认密钥
执行完成后,会在 ~/.ssh/目录下生成一个 test 和 test.pub 文件
复制新的公钥到github账号
这一步登陆个人的giuhub账号,将新生成的公钥配置到guthub上即可。
配置~/.ssh/config 文件
如果没有config文件,就在~/.ssh目录创建config文件, 该文件用于配置ssh私钥对应的服务器
-
cd ~/.ssh vim config
-
# key1 公司的github账号 # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa # key2 个人的guthub账号, xxx.github.com. me是自定义的 Host me.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/test
Bad owner or permissions on ~/.ssh/config
主要是没有对config的权限,运行命令: sudo chmod 600 config
测试ssh到github服务器的连接
ssh -T git@me.github.com
ssh -T git@github.com
如果出现一下提示,说明我们的配置成功,到此就可以结束了。
Hi USERNAME! You’ve successfully authenticated, but github does not provide shell access.
否则出现以下提示,说明系统ssh代理出现问题:
Permission denied (publickey)
出现以上原因主要是因为:
github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 GitHub ,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是 多用户 (first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即first的私钥,那么这个验证自然无法通过。
配置ssh key代理
1、查看系统ssh-key代理,执行如下命令:
ssh-add -l
以上命令如果输出The agent has no identities. 则表示没有代理。
如果系统有代理,可以执行下面的命令清除代理:
ssh-add -D
2、然后依次将不同的ssh添加代理,执行命令如下:
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/test
如果使用 ssh-add ~/.ssh/id_rsa的时候报如下错误,则需要先运行一下 ssh-agent bash 命令后再执行 ssh-add …命令
Could not open a connection to your authentication agent.
3、 再次进行ssh测试即可.
注意事项
ssh测试之后,在连接非默认账号的github仓库时,远程的地址要对应的作出修改.
配置了me.github.com用作个人的git我们就不能在用git@github了,要是用git@me.github.com
例:git clone git@me.github.com:账户名/仓库 而不是 git clone git@github.com:…