remote-ftp连得上但远程目录空白,主因是协议错配(如protocol设为"ftp"却连22端口)或权限不足(remote目录需r-x权限),须用sftp/ssh命令终端验证,并检查绝对路径与Developer Tools中的真实错误。

remote-ftp 连得上但远程目录空白?先查协议和权限
不是网络不通,而是配置错配或权限不足。最常见的是把 "protocol": "ftp" 写死却连着 22 端口,或者反过来看似填了 SFTP 实际走 FTP 协议——两者完全不兼容,静默失败,侧边栏空荡荡。
- 终端手动验证:
sftp -P <code>portuser@host 能列出目录,说明 SFTP 层通;ssh -p <code>portuser@host 能登录,说明 SSH 层通 -
"remote"必须是绝对路径,比如"/home/deploy/app",写成"app"或"./app"会直接失败 - 用户对
"remote"目录至少要有r-x权限(能进入、能列目录),仅r--或无权限时侧边栏不报错也不显示内容 - 打开
View → Developer → Toggle Developer Tools,在 Console 里搜remote-ftp,真实错误如Permission denied (publickey)或Connection timed out都会暴露出来
保存后文件没更新?别指望 Ctrl+S 自动上传
remote-ftp 默认不监听保存动作,Ctrl+S 只写本地磁盘,不会触发同步。上传必须显式触发,或靠 watch 规则被动响应。
- 右键本地文件 →
Sync local -> remote:一次一文件,最可靠 - 右键远程文件 →
Sync local :拉取最新版覆盖本地,适合多人协作时回滚 - 若想自动上传,需在
.ftpconfig中加这两行:"watch": ["**/*"]和"watchTimeout": 500,但注意:有约 500ms 延迟,且断网时不重试 - 大文件(>5MB)容易超时,默认
connTimeout是 10000 毫秒,可调高,比如设为30000
用密钥登录却连不上?权限和路径是硬门槛
remote-ftp 不弹密码框,密钥加载失败就卡在 “Connecting…” 无提示。它只认私钥文件的绝对路径和严格权限。
-
privatekey字段必须填绝对路径,例如"/Users/you/.ssh/id_rsa",不能用~或相对路径 - 本地私钥文件权限必须是
600:chmod 600 ~/.ssh/id_rsa,否则 SSH 库直接拒绝加载 - 远程
~/.ssh/authorized_keys里必须已写入你本地公钥,ssh-copy-id user@host是最稳方式 - 别用 root 直连——多数服务器默认关掉
PermitRootLogin,换普通用户 + sudo 更省心
为什么挂载 sshfs 比插件更稳?Atom 的文件监听器扛不住网络文件系统
哪怕 remote-ftp 表面连上了,打开含几千个文件的 node_modules 或日志目录,Atom 就会卡死。根源不在插件,而在 Atom 底层的 chokidar 监听器对网络文件系统支持极差,频繁触发 ENOTCONN 或 ETIMEDOUT 错误。
- macOS:
brew install sshfs,然后sshfs user@host:/path/to/src ~/mnt/remote -o follow_symlinks - Windows:装 WinFsp + SSHFS-Win,右键“Map network drive”,填
sftp://user@host/path/to/src - Linux:确保用户在
fuse组,mkdir -p ~/mnt/remote,再运行sshfs user@host:/path/to/src ~/mnt/remote - 挂好后,在 Atom 里
File → Add Project Folder打开~/mnt/remote,编辑即实时同步,Git / 搜索 / 跳转全部正常
真正麻烦的从来不是连上,而是密钥权限、fuse 组归属、挂载点目录创建、follow_symlinks 开关这些零散但致命的细节。漏一个,整个流程就停在“Connecting…”不动。

















