我试图使用 ssh 实例,但收到以下错误,这很奇怪,因为我尝试使用 更改权限chmod
,但这似乎不起作用,因为权限仍然是777
:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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).
我打开了git bash
,并且能够毫无问题地通过 SSH 进入我的实例,但权限也不是777
很好。
答案1
如果您引用 Windows 文件系统中的文件,则默认情况下它们不会保留 Linux 权限。但是,有一种方法可以启用它。编辑或创建(使用sudo
)/etc/wsl.conf
并添加以下内容:
[automount]
options = "metadata"
关闭所有 WSL 实例并重新启动一个实例,chmod
现在所有更改都会保留。
答案2
正确的处理方式:
/etc/wsl.conf
使用以下内容创建:[automount] enabled = true root = /mnt/ options = "metadata,umask=22,fmask=11"
要了解上述每个参数的含义,请参阅这MSDN 上的文章
关闭所有 WSL 终端并打开一个新终端
重新启动你的机器(如一些评论所示)
/mnt/c/
现在您已全部设置完毕;通过该选项,在启动时在 WSL 中正确反映并正确安装Windows 中文件的权限更改metadata
。
答案3
私钥是否在您的 Windows 文件系统上(在 /mnt/ 下)?您无法使用 Windows 上 Ubuntu 上的 Bash 上的 chmod 修改 Windows 文件系统上文件的权限。您必须将私钥复制到您的 WSL 主目录 (~) 并在那里执行此操作。
答案4
我想补充@basilA 的答案,因为创建文件并不是那么容易/etc/wsl.conf
,特别是因为我不断收到:
-bash: /etc/conf.wsl: Permission denied
即使我用 运行命令sudo
。无论如何,诀窍是更改为 root 用户。
因此,从常规命令提示符中键入以下命令:
wsl
sudo su
-
cat > /etc/wsl.conf << EOF [automount] options = "metadata" EOF