SFTP插件连不上根本原因是SSH认证失败或路径配置错位;必须用密钥认证、正斜杠绝对路径、匹配ssh命令参数;上传需配置upload_on_save与ignore_regexes防覆盖;中文路径失败多因服务器locale非UTF-8;上传慢可启用keepalive并关闭sync_down_on_open。

为什么 SFTP 插件装了却连不上服务器
根本原因通常是 SSH 认证失败或路径配置错位,不是插件没装好。Sublime 的 SFTP 插件依赖本地 ssh 命令(Windows 需额外装 OpenSSH 或 Git Bash),且不支持密码交互式输入——必须用密钥认证。
- 检查本地能否命令行直连:
ssh -i /path/to/key user@host,不通就别指望插件通 -
sftp-config.json里host、user、port必须和 ssh 命令一致,private_key路径要用正斜杠、绝对路径(Windows 也写C:/Users/xxx/key,别用反斜杠) - 如果服务器禁用了密码登录但你没配密钥,会卡在“Connecting…”或报错
Authentication failed
如何让保存即上传,又避免覆盖线上配置文件
靠 upload_on_save + ignore_regexes 组合控制,不是所有文件都该自动同步。
- 启用实时上传:
"upload_on_save": true,但默认会传整个项目目录,危险 - 限定作用范围:在项目根目录建
sftp-config.json,用"remote_path": "/var/www/html/"指定目标,别用/ - 排除敏感文件:
"ignore_regexes": ["\\.env$", "config\\.php$", "\\.git/", "node_modules/"],正则末尾加$防误杀 - 注意:修改远程文件后本地不会自动拉取,
upload_on_save是单向的
中文路径或特殊字符文件名上传失败怎么办
本质是编码不一致。SFTP 插件默认按 UTF-8 解析路径,但某些旧版 Linux 服务器(尤其是 CentOS 6 或未设 locale 的容器)用的是 Latin-1,导致文件名乱码、创建失败或 404。
- 先确认服务器 locale:
locale命令看LANG,不是en_US.UTF-8就要改 - 临时解决:在
sftp-config.json加"charset": "utf-8"(仅对部分服务器生效) - 根治方法:服务器端执行
localectl set-locale LANG=en_US.UTF-8并重启 sshd - 绕过法:本地文件名避开中文、空格、括号,用
my_config_v2.php替代我的配置(测试).php
上传慢、卡顿或提示“Operation not permitted”
多半是权限或连接复用问题。SFTP 插件默认每次操作新建连接,频繁保存时开销大,且某些 NAS 或 Docker 容器的挂载点不支持 stat 等元数据调用。
- 开启连接复用:
"connect_timeout": 30和"keepalive": 60,减少握手延迟 - 关掉多余校验:
"sync_down_on_open": false(除非真需要打开就拉远端)、"file_permissions": "644"(避免 chmod 失败中断) - “Operation not permitted” 常见于 WebDAV 挂载盘或 NFS 共享目录,换用原生 SSH 路径(如
/home/user/project)而非/mnt/nas/project - 大文件(>5MB)建议手动右键
Upload File,别依赖自动保存
真正麻烦的从来不是配一次连接,而是不同服务器的 SSH 策略、文件系统限制、locale 设置混在一起,同一个 sftp-config.json 在三台机器上可能两种成功一种失败。多建几个配置文件,按项目或环境分开放,比硬凑通用配置靠谱。










