Coding.net上git仓库ssh地址的"bug"
前段时间在用Coding.net同步git仓库时,能正常使用非https的ssh协议,但是这两天在自己的Windows机器上push内容时,报如下图中的错误Permission denied (publickey).
:
1 查找原因
查了下Coding.net上这个项目的ssh地址如图所示:
它和我的Windows机器上该项目的G:\php\htdocs\CodingNet\mylnmp\.git\config
文件中的配置是一样的(url = [email protected]:vfhky/mylnmp.git
),如下图所示:
对于Permission denied
错误,按理说git项目地址没问题,那只能是ssh公私钥不对了。于是又用Git Bash重新生成了一对SSH公私钥,并把公钥放到Coding.net上。结果执行git push origin master
推送命令时,还是报一样的错误。
在Google上找了好久都没找到原因所在,没办法就只能将仓库切换到https协议。这样每次push或者pull的时候,都需要输入用户名和密码,比较麻烦。
2 对比GitHub的ssh地址发现Coding.net的“bug” 【!!!经指正,其实是我自己弄错了!!!】
下午无意之间看到了自己GitHub上一个仓库的ssh命名[email protected]:vfhky/mylnmp.git
,它和上面Coding.net的ssh地址是有区别的。Github的ssh地址中是直接@域名
的,而Coding.net的ssh地址是@git.域名
。
3 解决方法 【!!!经指正,该方法是错误的!!!】
于是,立马尝试把本地Coding.net项目中的ssh地址改成类似于GitHub的ssh地址:
######Coding.net上git仓库ssh地址的bug
url = git@git.coding.net:vfhky/mylnmp.git
改成正确的ssh地址
url = git@coding.net:vfhky/mylnmp.git
4 结束
改完之后,重新执行git push命令,就正常了。在遇到到如下错误时,基本可以从git地址和ssh公私钥是否都正确这两方面来解决。
vfhky@VFHKY-PC /g/php/htdocs/CodingNet/mylnmp (master)
$ git push origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
vfhky@VFHKY-PC /g/php/htdocs/CodingNet/mylnmp (master)
$
4 update 2015.07.01 15:12 【正确的解决方法】
经过 @yucong sun 的指正,之前是由于本地Win机上的~/.ssh/config文件配置的主机名是Host coding.net
而不是Host git.coding.net
,所以git项目中配置的url = [email protected]:vfhky/mylnmp.git
,无法匹配到这个主机名Host。
因此,只要把~/.ssh/config
的Host coding.net
改成Host git.coding.net
就行了,如下图所示。这里由于自己的考虑不周,误会“小猴子”了,抱歉抱歉!
Comments »