前言
Linux 使用过程中遇到最多的坑就是权限设置错误,而 WSL ( Windows Subsystem for Linux ) 作为一个 Linux 环境也不例外。
错误日志
Bad owner or permissions on /home/p3terx/.ssh/config
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/mnt/d/KEY/P3TERX' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/mnt/d/KEY/P3TERX": bad permissions
p3terx@*******: Permission denied (publickey).
分析问题
问题起因是我直接复制了 Windows 下 Git Bash 所使用的 SSH 配置文件,并修改了配置文件中私钥文件路径为 DrvFs 中的路径。而 DrvFs 文件系统权限问题会导致这两个文件的权限为777
。
解决方案
Linux 中的 SSH 配置文件的正确权限是600
,SSH 私钥的正确权限是400
,所有者必须是当前用户。
由于 WSL 通过 DrvFs 无法真正的设置文件权限,所以必须将私钥文件复制到 WSL 中的~/.ssh
目录中,然后再设置权限:
chmod 400 ~/.ssh/id_rsa
设置 SSH 配置文件权限:
chmod 600 ~/.ssh/config
设置文件所有者:
chown $USER ~/.ssh/.
参考资料
ssh returns "Bad owner or permissions on ~/.ssh/config"
ssh "permissions are too open" error
本文作者:P3TERX
本文链接:https://p3terx.com/archives/problems-and-solutions-encountered-in-wsl-use-3.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。