ssh的多账户功能(git bash默认只会找~/.ssh/id_rsa的key).
解决方法很简单,需要配置~/.ssh/config文件(没有则新建,没有扩展名)
config基本写法:
1 2 3 4 5 | Host myhost(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)[注意下面有缩进] User 登录用户名(如:git) HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org) Port 服务器open-ssh端口(默认:22,默认时一般不写此行) IdentityFile 证书文件路径(如~/.ssh/id_rsa_*) |
这里举例一下,config内容如下:
1 2 3 4 | Host almighty.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_github |
同时你的github的repossh url就要做相应的修改了,比如根据上面的配置,原连接地址是:
1 | git@github.com:almighty/test.git |
那么根据上面的配置,就要把github.com换成meilihao.github.com,那么ssh解析的时候就会自动把meilihao.github.com 转换为 github.com,修改后就是
1 | git@almigty.github.com:almighty/test.git |
如果你想测试一下连接,可用如下命令
1 | ssh -T yourHost //我这是ssh -T meilihao.github.com |
ssh再加"-v"参数时,可输出更多的调试信息
对了还要记得修改git提交的地址
1 2 | git remote rm origin git remote add origin git@almigty.github.com:almighty/test.git |
这样就行了,这里只是添加了一个ssh账号,有多个时可配置多个Host,万事OK.
ps.
sourcetree如果使用多账号时,记得修改config文件,同时在"Tools"菜单的"add sshkey"中选择私钥,最重要的是clone时要使用修改后的path.
1.//git clone项目时提示Host key verification failed
使用 ssh协议时会验证对方服务器的 key。ssh无法确认服务器出示的 key 是可信认的,所以问你这个 key是不是真的是你要连接的那个服务器的。你没说「yes」所以 ssh 认为你不想继续连接,结果当然是连接失败
2.//git clone Permissions 0644 for ‘~/.ssh/id_rsa’ are too open
只要把权限降到0600就可以了