如果,你的git代码仓库,比如说腾讯云coding,通过ssh秘钥访问,一直用的好好的,有一天,你又增加一个aliyun云效的代码仓库,又配置了aliyun云效的秘钥并且,根据aliyun云效的官方文档上传了ssh公钥,能够正常工作了。
然后,你又返回去搞腾讯云coding做代码托管的项目,发现:
这种情况下,你碰到的这个问题,大概率就可以通过以下步骤解决:
检查本地秘钥
首先你需要检查一下本地秘钥,一般情况下,你如果是windows操作系统的话,秘钥文件默认是在:
C:\Users\yourusername\.ssh
你会发现你通过ssh-keygen 工具生成的公钥和秘钥文件都在:
当然,你在使用ssh-keygen 工具生成公钥的时候,两个平台的公钥不能相互覆盖掉,生成的时候你需要注意一下文件名,把他们区分开来。
创建config文件
如果你在使用git命令的时候报以上类似的错误的话,那么大概率你的.ssh文件夹下是没有上图所示的config文件的,所以你需要手动添加config文件,注意,config文件没有扩展名,你用记事本编辑生成一个即可。
创建之前先验证一下:
ssh -T git@codeup.aliyun.com
大概率会得到:
xxx....xxx
git@e.coding.net: Permission denied (publickey).
然后用记事本创建config文件,内容类似:
User后面写你的用户名就可以了。
config文件的访问权限
创建config之后,再次运行:
ssh -T git@codeup.aliyun.com
你肯能会得到如下提示:
Bad owner or permissions on C:\\Users\\zhang/.ssh/config
这是windows下的文件权限的问题,我的电脑反正就是这样,我也检查了该文件、以及文件夹.ssh的权限,看上去一切正常,我的用户也是owner,对文件夹和config文件有完全控制权限,但是,就是不行,我也不知道为啥,说实话,windows虽然是图形界面,但是在文件权限这块我还真是没搞懂,不如linux的字符界面那么清晰明了。
所以我就把所有的权限通通删掉,系统提示你有继承的权限不让删除的话,你就把继承权限修改掉,不继承。所有权限都删掉之后再把你当前用户重新加为owner、之后再授权完全访问。折腾一回之后,就好了:
C:\Users\zhang>ssh -T git@codeup.aliyun.com
Welcome to Codeup, aliyun3709444756!
C:\Users\zhang>ssh -T git@e.coding.net
CODING 提示: Hello lKSRbQdhrP, You've connected to coding.net via SSH. This is a Personal Key.
lKSRbQdhrP,你好,你已经通过 SSH 协议认证 coding.net 服务,这是一个个人公钥.
公钥指纹:e3:da:a9:bb:a3:97:f0:75:92:b0:2c:6b:98:00:82:a8
两个都好了,可以正常使用了