sublime怎么解决sftp上传权限不足_sublime远程同步权限错误处理【方案】

20次阅读

SFTP插件报“Permission denied (publickey)”或“550 Permission denied”主因是认证方式不匹配、密钥路径未配置、端口错误、remote_path权限不足或umask导致文件权限异常,需逐项检查sftp-config.json字段及服务器权限设置。

sublime怎么解决sftp上传权限不足_sublime远程同步权限错误处理【方案】

为什么 SFTP 插件报 Permission denied (publickey)550 Permission denied

不是密码错了,也不是服务器没开 ssh,而是 SFTP 插件默认用的认证方式和你的服务器实际要求不匹配。常见组合是:服务器只允许密钥登录,但插件配置里没指定 private_key;或者你用了密码登录,但服务器禁用了密码认证(PasswordAuthentication no);还有一种是路径权限问题——比如你连的是用户 deploy,但目标目录属主是 www-data,且目录权限是 755,导致写入失败。

配置 sftp-config.json 必须填对这 4 个字段

sublime 的 SFTP 插件靠项目根目录下的 sftp-config.json 工作。光有 hostuser 不够,下面这些字段漏一个都可能上传失败:

  • "type": "sftp" —— 别写成 "ftp" 或漏掉
  • "sync_down_on_open": false —— 避免打开文件时意外覆盖本地内容
  • "upload_on_save": true —— 确保保存即同步
  • "private_key": "/Users/you/.ssh/id_rsa" —— 绝对路径,windows 用双反斜杠或正斜杠,如 "C:/Users/you/.ssh/id_rsa"

如果服务器用非标准端口(比如 2222),必须显式加 "port": 2222,否则插件默认走 22,连不上就直接报权限错。

上传后文件属主/权限不对?改 remote_pathfile_permissions

SFTP 插件不会自动帮你 chownchmod,上传后的文件权限取决于服务器 SSH 用户的 umask 和目标目录权限。如果你需要 php 能读、Web 服务能写,得手动干预:

  • 确保 "remote_path" 指向你有完整写权限的目录(比如 /home/deploy/webapp/,而不是 /var/www/html/
  • "file_permissions": "644""dir_permissions": "755" —— 这些值只在上传时生效,不影响已有文件
  • 更彻底的办法:在服务器上把你的部署用户加入对应组(如 www-data),并把目标目录设为 g+rwX,再配 "umask": "002"

调试时打开 SFTP 日志看真实错误

插件界面不报详细错误,但日志会打印每一步的响应。打开 Sublime → Preferences → Package Settings → SFTP → Debug Log,然后上传一次,看控制台输出。重点找这几类线索:

  • Connection refused → 端口或防火墙问题
  • Authentication failed → 密钥路径错 / 密码错 / 服务器禁了该认证方式
  • No such fileFailed to create Directoryremote_path 不存在或父目录没写权限
  • Operation not permitted → SElinux 或挂载选项(如 noexec)拦截

日志里出现 SSH_FX_PERMISSION_DENIED 就说明不是连接问题,是路径或用户权限卡住了,这时候回头检查 remote_path 所属用户和目录 ls -ld 结果最有效。

密钥路径写错、remote_path 拼错、服务器 umask 和目录权限三者叠加,最容易被当成“权限不足”笼统处理。逐项验证比反复重装插件快得多。

text=ZqhQzanResources