问题描述
我试图使用ssh实例,但收到此错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'privkey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "privkey.pem": bad permissions
Permission denied (publickey).
真奇怪我尝试使用’chmod’命令更改权限,但这似乎不起作用。 bash给人的印象是命令已注册,但是我检查了密钥的权限,它仍然在777。打开git bash,我可以毫无问题地进入ssh实例,并且权限不是777,好。
最佳回答
如果您在Windows文件系统中引用文件,则默认情况下它们不会保留Linux权限。但是,有一种方法可以启用它。编辑或创建(使用sudo
)/etc/wsl.conf
并添加以下内容:
[automount]
options = "metadata"
关闭所有WSL实例并重新启动实例,现在将保留所有chmod
更改。
次佳回答
私钥是否在Windows文件系统上(在/mnt /下)?您无法在Windows的Ubuntu上的Bash上使用chmod来修改Windows的文件系统上的文件的权限。您必须将私钥复制到WSL主目录(〜)并在那里进行。
一些讨论在这里:https://github.com/Microsoft/WSL/issues/81
第三种回答
处理此问题的正确方法:
-
创建一个名为
/etc/wsl.conf
的文件,并将其编辑为包含以下内容:
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
要了解上面每个参数的含义,请参考msdn上的此文章:https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/
-
关闭所有打开的WSL终端,然后打开一个新终端。
现在您已经准备就绪,可以通过WSL “metadata”功能在/mnt /c /中更改Windows中文件的权限,从而正确反映在Linux子系统上。
WSL配置将始终在WSL启动时正确安装。