VSCode Remote SSH操作/var/www报EACCES权限拒绝排查
问题原因与解决方案
这类普通SSH操作正常、仅VSCode Remote SSH报EACCES权限错误的问题,90%以上是远程VSCode Server进程未重载用户组权限导致,不需要做特殊的VSCode侧配置,按以下步骤排查修复即可:
第一步:重载远程会话权限
你将user加入www-data组的操作,只会对操作完成后新创建的登录会话生效:
- 系统自带OpenSSH每次连接都会新建登录会话,自动加载最新的用户组权限,所以nano编辑、文件操作都正常
- VSCode Remote SSH第一次连接后会在服务器启动长驻的vscode-server后台进程,如果你是在加用户组操作之前连过VSCode,这个后台进程会一直保留旧的权限集合,不会自动加载新加的www-data组权限,所有文件操作都会报权限拒绝
修复操作:
- 完全关闭本地所有VSCode窗口
- 用普通SSH连接到服务器,执行命令杀掉所有残留的vscode-server进程:
pkill -u user -f vscode-server - 重新打开VSCode,通过Remote SSH重新连接服务器即可
重连后可以在VSCode内置终端执行id命令验证,输出的用户组列表里能看到www-data就说明权限加载正常,此时再操作/var/www/html下的文件就不会报错。
第二步:补全目录权限规范配置
你之前递归设置0775权限的操作存在小缺陷,会导致后续新建文件可能出现权限异常,建议调整为带SGID位的规范权限,保证目录下所有新建文件自动继承www-data用户组:
# 给所有目录设置2775权限(SGID位+所有者/组读写执行、其他读执行) sudo find /var/www -type d -exec chmod 2775 {} \; # 给所有文件设置0664权限(所有者/组读写、其他读,去掉不必要的执行权限) sudo find /var/www -type f -exec chmod 0664 {} \;
执行完成后,不管是nginx进程还是user账号,在web目录下创建的文件都会自动归属www-data组,不会出现新文件权限不对的偶发报错。
注意事项
- 不需要修改VSCode的任何默认配置,Remote SSH的文件操作完全使用你登录的user账号权限,和普通SSH的权限逻辑完全一致
- 不要为了临时解决问题给/var/www目录设置777权限,也不要用root账号启动vscode-server,会带来严重的安全风险
内容的提问来源于stack exchange,提问作者cantsay
相关产品推荐
相关产品推荐

