SFTP插件连不上服务器但命令行ssh可以,主要是因其不读取~/.ssh/config、不支持ssh-agent,且仅支持PasswordAuthentication或PubkeyAuthentication;需显式配置host/user/port、用绝对密钥路径、处理密码问题,并检查服务端SSH配置。

为什么 SFTP 插件连不上服务器,但命令行 ssh 可以?
多数情况是 SFTP 插件默认不读取系统 SSH 配置(比如 ~/.ssh/config),也不自动加载密钥代理(ssh-agent)。它用的是自己封装的 paramiko 库,对 OpenSSH 的高级特性支持有限。
实操建议:
- 在 SFTP 配置文件中显式写全
host、user、port,不要依赖别名 - 密钥路径必须用绝对路径,比如
/Users/you/.ssh/id_rsa,不能写~/.ssh/id_rsa - 如果私钥有密码,SFTP 插件不会弹窗提示输入——它会静默失败。此时要么去掉密码(不推荐),要么改用
password字段明文填(仅限本地可信环境) - 检查服务器是否禁用了
PasswordAuthentication no且没开PubkeyAuthentication yes,SFTP 插件只支持这两种认证方式之一
如何让 SFTP 自动同步修改并忽略临时文件?
SFTP 插件靠 sftp-config.json 中的 upload_on_save 和 ignore_regexes 控制行为,但默认配置容易漏掉常见干扰项。
实操建议:
- 开启自动上传:
"upload_on_save": true,但注意它只触发保存动作,不监听文件系统变化 -
ignore_regexes建议至少包含:"\\.sublime-project$"、"\\.sublime-workspace$"、"^\\."(隐藏文件)、"~$"(vim 交换文件)、"\\.swp$" - 若项目含
node_modules或venv,务必加"node_modules/"、"venv/"—— 否则保存一个 JS 文件可能触发数千个文件上传,卡死连接 - 远程路径用
remote_path指定根目录,避免每次右键“Upload File”时手动选错位置
保存时提示 “Timeout waiting for SSH response”,怎么调?
这是 paramiko 在建立连接或传输时超时,和网络延迟、服务器响应慢、防火墙策略都有关,不是插件本身坏了。
实操建议:
- 在配置里加
"connect_timeout": 30(单位秒),默认只有 15,高延迟链路(如跨国服务器)很容易超时 - 加
"keepalive": 60,防止中间 NAT 设备断开空闲连接;值设为 0 表示关闭保活(不推荐) - 禁用压缩:
"compress": false,某些老旧服务器的 zlib 实现有兼容问题 - 如果服务器启用了
UseDNS yes,SSH 握手会做反向 DNS 查询,拖慢连接——登录服务器后检查/etc/ssh/sshd_config,改成UseDNS no并重启sshd
多人协作时,怎么避免覆盖他人正在编辑的文件?
SFTP 插件本身不提供文件锁或版本通知机制,所谓“协同”其实是靠约定和配置规避冲突。
实操建议:
- 关闭
upload_on_save,改用手动上传(右键 → “SFTP → Upload File”),上传前先右键 → “SFTP → Download File” 拉最新版 - 配置
"sync_down_on_open": true,打开文件时自动下载远程副本(适合小文件,大文件慎用) - 用
"file_permissions": "644"和"dir_permissions": "755"统一权限,减少因 chmod 导致的 diff 干扰 - 真正需要强协同的场景,SFTP 就不该是主力方案——换成 VS Code + Remote-SSH,或直接用 Git + 部署脚本
远程路径映射、密钥格式、超时阈值、忽略规则,这四块配置一旦写错,错误表现往往模糊(比如“无法连接”实际是密钥路径错),建议每次改完先删掉 sftp.last_transfer 缓存文件再试。










