如何使用非根用户权限将文件保存在 vscode 远程 SSH 中

我无法用 VSCodeRemoteSSH 保存远程服务器上的任何文件,因为我不是 root 用户。

关于如何使用 SSH 配置文件设置 SSH,我已经遵循了 正式文件,但是即使我的用户具有 sudo 特权,我也无法在 VSCode 中找到任何用 sudo 保存的选项。

这是我的 SSH 配置文件 /Users/geoff/.ssh/config:

Host gcpmain
User geoff
HostName <IP_ADDRESS>
IdentityFile ~/.ssh/gc_rsa

显然,当我尝试保存任何需要 sudo 的文件时,我会得到这样一个预期的错误消息:

Failed to save 'default': Unable to write file (NoPermissions
(FileSystemError): Error: EACCES: permission denied, open
'/etc/nginx/sites-available/default')

有没有什么方法可以强制 VSCode 保存为 sudo? 非常感谢你的回答! :)

83842 次浏览

当我试图在我的 VPS 上编辑 nginx conf 文件时,我遇到了同样的问题。在 github: 提升 SSH 远程的权限上有一个公开的问题,解决了类似的问题。

作为一个临时解决方案,您可以使用 WinScp-add sudo /path/to/sftp-server到您的连接设置,然后您可以保存对大多数(如果没有)文件的更改。WinScp 在登录时使用 sudo.

在使用 vs 代码 ssh 登录具有非 root 帐户的 CentOS 时,我也遇到了同样的问题。

真正的原因是: 您的用户帐户(这里是“ geoff”)需要首先获得目标目录的权限。

sudo setfacl -R -m u:geoff:rwx /etc/nginx/sites-available/default

为了你的案子。


更一般的用法:

sudo setfacl -R -m u:username:rwx /path/to/directory

此命令将帮助您获得目录 /path/to/directory的权限,而不会影响任何其他用户或组的权限。不建议使用 chown。这个解决方案可以在 Mac/Linux 上使用。

当您运行完上面的命令后,您可以编辑和保存 VS 代码。希望对您有所帮助。

使用 VSCode ssh (我在 AWS 中使用 Ubuntu EC2实例)在远程计算机上配置文件的最简单的解决方案是在使用 chmod 处理文件时修改文件特权。

默认情况下,服务器配置文件(/etc/nginx/sites- 可用/默认)是只读的(需要 sudo 来写/保存)。在允许 VSCodeSSHsudo 访问方面还有一些未解决的问题,但是我找不到好的解决方案。

当您需要在 dev 中配置服务器文件时,使用 sudo 特权在命令行 SSH (非 VSCode)中运行它:

sudo chmod a+rwx /etc/nginx/sites-enabled/default

(或服务器配置文件的路径)。

然后您可以使用 VSCode 进行 ssh 并自由地保存编辑后的文件。

如果您不喜欢通过命令行在 vim 中工作,并希望使用 VSCode 编辑服务器配置文件,那么这可能是最快的解决方案。完成后,不要忘记将文件权限切换回只读:

sudo chmod -R 0444 /etc/nginx/sites-available/default

我推荐这个 VSCode 扩展: 在远程 SSH 中另存为 Root

在用 Remote-SSH 打开的窗口上安装扩展,并在命令面板中使用“ Save as Root”代替 Ctrl + S。

基本上,它读取编辑器和 调用 sudo 命令的内容以覆盖文件。

sudo chown -R myuser /path/to/folder

这招对我很管用!

我使用 SSH 从本地 VSCode 连接到远程 Ubuntu 机器,并在 Ubuntu 机器中安装 VSCode。我可以创建文件,但不能写任何东西。

我需要写一个普罗米修斯配置文件,这是我如何给写权限:

sudo chown -R ubuntu /etc/prometheus/prometheus.yml

我刚刚遇到的一个 Linux 解决方案是使用 bindfs(sudo apt install bindfs)。

要为当前用户启用编辑 /etc/nginx作为 root,在 ~/.bind-mounts/nginx中工作:

mkdir -p ~/.bind-mounts/nginx
sudo bindfs --map=root/${USER}:@root/@$(id -gn) /etc/nginx ~/.bind-mounts/nginx
sudo umount ~/.bind-mounts/nginx # When you're done, or run bindfs with '-f' to keep it in the foreground

bindfs有很多 选择--map可能不是最好的。它一直在我的测试工作到目前为止。

一切都如你所愿。让您“探索”作为 root和任何修改将作出,如果你有 root的权限。别忘了安全隐患!

sudo chmod -R 777 folder_name_where_your_file_exists

或者

sudo chmod -R 755 folder_name_where_your_file_exists

我也遇到了同样的错误,但是我看了这个 视频,谢谢帮助我。

sudo chown -R username dictoryname

vscode file