Windows 下 Ubuntu 子系统 git push 报 ssh key permission too open 错误
症状
我在 Windows 10 下安装了 Ubuntu 子系统,通过 bash 做 git 提交时,报错说 /home/user/.ssh/id_rsa 文件的权限为 0777,太开放了,不能用。从而引发代码提交失败。
失败的尝试
chmod 600 /home/user/.ssh/id_rsa
然后再提交,发现还是报同样的错误,也就是说,以上命令改不了 id_rsa 文件的权限。
分析
切换到 id_rsa 文件的目录:
cd /home/user/.ssh
ll
发现 id_rsa 指向了 /mnt/c/Users/user/.ssh/id_rsa,而后者是在 Windows 文件系统里,所以很有可能 chmod 改不了 Windows 主机的文件权限。
验证一下
如果在 /home/user/.ssh 目录下新建一个文件,通过 chmod 是可以修改其权限的。于是说明以上猜测能站住脚。
解决方案
删除那个默认的快捷方式:
rm id_rsa
rm id_rsa.pub
然后新建一个 ssh key:
sshkey-gen
将新建的 ssh public key 打印出来:
cat id_rsa.pub
将其复制,并粘贴至源代码库的设置 ssh key 的页面,保存。
然后再重新 git push,成功!