直接编辑远程根目录(/)在Sublime Text中技术上可行,但实际受限于SSH用户权限、chroot配置及SELinux/AppArmor策略;remote_path设为"/"需root登录且禁用sync_down_on_open,否则因权限不足或超时导致空白目录或失败。

直接编辑远程根目录(/)在 Sublime Text 中可行,但必须绕过权限和路径限制——sftp-config.json 的 remote_path 字段允许设为 "/",但实际能否访问取决于 SSH 用户权限、SELinux/AppArmor 策略及服务器端 SFTP 子系统配置,不是插件本身限制。
为什么 remote_path: "/" 会失败或只看到空目录
常见错误现象是右键 → Browse Server 后显示空白、报错 Permission denied 或仅列出 /home/xxx 下内容。这不是 Sublime 或 SFTP 插件的问题,而是远程 SFTP 服务默认将用户 chroot 到其 home 目录(例如 OpenSSH 的 ForceCommand internal-sftp -d /home/%u),导致即使配置 "remote_path": "/",底层也根本无法列出根目录。
- 检查远程服务器是否启用 chroot:运行
sudo sshd -T | grep -i chroot,若输出含ChrootDirectory或ForceCommand internal-sftp,说明已被限制 - 普通用户几乎不可能有读取全部
/etc、/bin、/usr的权限,即使绕过 chroot,ls /也会大量返回Permission denied,SFTP 插件会静默跳过这些条目 - Sublime 的 SFTP-Next(ST4)对 root 路径的解析没问题,但服务器返回的目录列表为空时,插件就无文件可展示
sftp-config.json 中 remote_path 设置为 "/" 的实操要点
如果确认服务器允许 root 访问(如你就是 root 登录,且未启用 chroot),配置本身很简单,但必须满足以下硬性条件:
-
remote_path必须写成"/"(严格以单个正斜杠开头,不能是""、"./"或"/.") - 用户必须用
root或具有sudo权限的账号,且ssh_key_file对应私钥能免密登录(不推荐明文password) - 配置中需显式关闭
sync_down_on_open(设为false),否则打开任意文件前会尝试stat /下所有子项,极易超时或卡死 - 添加
"connect_timeout": 15和"operation_timeout": 10,避免因遍历慢设备(如 LVM 或 NFS 挂载点)导致界面假死
示例最小可用配置片段:
{
"type": "sftp",
"host": "192.168.1.100",
"user": "root",
"ssh_key_file": "/Users/me/.ssh/id_rsa",
"port": 22,
"remote_path": "/",
"upload_on_save": false,
"sync_down_on_open": false,
"connect_timeout": 15,
"operation_timeout": 10
}
更安全、更稳定的替代方案:用符号链接绕过 root 权限限制
绝大多数场景下,真要编辑 /etc/nginx/nginx.conf 或 /var/www/index.html,并不需要把整个 / 挂进来。正确做法是:在用户 home 目录下创建指向目标路径的符号链接,再让 remote_path 指向该链接。
- 远程执行:
mkdir -p ~/remote-root && ln -sf /etc ~/remote-root/etc && ln -sf /var/www ~/remote-root/www - 本地
sftp-config.json中设"remote_path": "/home/youruser/remote-root" - 这样既避开 root 权限校验,又能在侧边栏直接点开
etc/编辑配置,保存后自动同步到真实位置 - 注意:此法要求远程服务器
/home/youruser所在文件系统支持硬链接或你有sudo权限写入目标路径,否则上传会失败并报Permission denied
真正卡住人的从来不是 Sublime 怎么配,而是没意识到:SFTP 协议本身不提供“提升权限”能力,它只是忠实转发 SSH 会话的文件操作。你用什么用户登录,就只能看到那个用户能 ls 出来的东西。强行配 remote_path: "/" 只会让问题从“打不开文件”变成“打不开任何文件”。


















