sublime text 本身不支持远程连接,必须安装 sftp 插件;插件需重启生效且仅在有效项目中激活右键菜单,sftp-config.json 必须置于项目根目录、严格命名、正确填写 host/user/remote_path/ssh_key_file,upload_on_save 仅对已映射目录生效且无失败回滚机制。

Sublime Text 本身不支持远程连接,必须靠 SFTP 插件实现;但插件装完不会自动生效,菜单不出现、配置不加载、保存不上传——90% 的问题都卡在项目绑定、配置路径或 SSH 认证细节上。
右键没 SFTP 菜单?先检查项目和文件夹状态
插件只在有有效项目且侧边栏显示文件夹时才激活菜单。它不响应空白处、单个文件、未添加到项目的目录,也不认“打开文件夹”这种临时视图。
- 必须通过 Project → Add Folder to Project 把本地目录加进项目,让它出现在侧边栏顶层
- 右键操作对象只能是侧边栏中那个文件夹图标本身,不是里面的文件,也不是空白区域
- 确认安装的是作者为
wbond的官方SFTP(别选sftp-client或FTPSync) - 安装后务必重启 Sublime Text,否则插件初始化不完整,Project 菜单里都看不到
SFTP项
sftp-config.json 放哪、怎么写、为什么总静默失败
这个文件不是全局配置,而是严格绑定到你右键的那个文件夹根目录下,名字、大小写、扩展名一个都不能错:必须叫 sftp-config.json,不能是 SFTP-config.json、sftp_config.json 或 sftp-settings.json。
-
remote_path必须以/开头,结尾也建议加/(如"/var/www/html/"),否则路径拼接会偏移 -
ssh_key_file支持~展开(如"~/.ssh/id_rsa"),但不识别$HOME或环境变量 - 用密钥登录时,
password字段必须完全删除,留空字符串("password": "")会导致插件仍走密码认证并失败 - Windows 路径要用正斜杠或双反斜杠:
"C:/Users/xxx/.ssh/id_rsa"或"C:\Users\xxx\.ssh\id_rsa"
上传失败却没报错?看控制台日志才是真因
弹窗提示 “Permission denied” 或直接无声失败,根本不是网络问题,而是 OpenSSH 底层被拦截了。插件不复用终端里的 ssh-agent,也不继承你的免密登录状态。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)→ 输入SFTP: Show Console回车,所有 ssh/sftp 命令和错误都会实时打印 - 常见真因:
ssh_key_file权限不是600(Linux/macOS 下执行chmod 600 ~/.ssh/id_rsa) - 远程服务器
/etc/ssh/sshd_config中PubkeyAuthentication被设为no -
remote_path目录对当前用户不可写(比如www-data用户没权限写/var/www/html)
upload_on_save 不是实时同步,它不校验、不回滚、不锁文件
这个配置只是“保存后触发一次上传”,没有版本比对、没有冲突检测、上传失败也不会提醒或恢复本地内容。多人协作或服务端被其他方式修改时,极易覆盖最新变更。
- 启用
sync_down_on_open只保证打开文件时拉一次远程版,之后编辑全程不检查中间是否又被改过 - 启用
confirm_overwrite_newer可在本地文件比远程旧时弹窗提醒,但需手动确认 - 生产环境部署绝不能依赖
upload_on_save—— 它不校验上传结果,失败了就静默丢数据 - 如果服务器响应慢,可在配置里加
"timeout": 10,默认 3 秒超时太激进
最常被忽略的其实是项目绑定逻辑:upload_on_save 只对“属于某个 SFTP 项目的文件”生效,而项目不是靠打开文件夹建立的,必须通过 Project → Save Project As… 生成 .sublime-project 文件,或右键文件夹走 Map to Remote 自动生成配置并绑定路径。











