remote-ftp插件已停止维护,因底层ftp模块与新版node.js/electron冲突,在atom 1.60+及新系统上无法正常工作;连sftp需正确配置protocol为sftp、port为22,并使用privatekey而非pass。

Remote-FTP 插件已停止维护,2021 年起不再更新,当前在 Atom 1.60+、macOS Sonoma、Windows 11 或 Ubuntu 22.04+ 上基本无法正常工作。它不是配置问题,而是底层依赖 ftp 模块与新版 Node.js/Electron 冲突,装上就报 Cannot find module 'ftp' 或启动崩溃。
Remote-FTP 连不上?先确认你是不是在用它连 SFTP
很多人填了 "protocol": "ftp" 却连 22 端口,或反过来填 "protocol": "sftp" 却连 21 端口——这会静默失败,侧边栏空白,控制台也不报错。SFTP 和 FTP 是两套协议,端口、认证方式、加密逻辑完全不同:
- SFTP 走 SSH(默认端口 22),依赖
ssh2库,需密钥或密码登录 - FTP/FTPS 走传统文件传输协议(默认端口 21),明文或 TLS 加密,
remote-ftp的 FTP 实现早已失效 - 插件 UI 里选 “SFTP” 时,
port必须是 22(或你改过的 SSH 端口),不能写 21 - 终端验证最准:
ssh -p 22 user@host能登录 → SSH 层通;sftp -P 22 user@host能ls→ SFTP 子系统启用
.ftpconfig 里哪些字段真有用
最小可用配置只需 5 项:protocol、host、port、user、remote。其余字段多数可删,乱填反而触发异常:
-
pass明文存密码极不安全,且新版插件常忽略它;改用privatekey+passphrase(绝对路径!比如/home/user/.ssh/id_rsa) -
remote必须是绝对路径,如/home/deploy/app;写成app或./app就列不出文件 -
promptForPass设为true才弹密钥口令框;设false又没配密钥,连接直接失败 -
ignorehost在内网 IP 或自签名证书场景下常需设为true,否则卡在 host key verify -
watch和watchTimeout控制自动同步,但有约 500ms 延迟,且断网不重试
为什么侧边栏空着、没报错、也连不上
常见原因不是网络不通,而是权限或路径不可见:
- 用户对
remote目录只有r-x(执行权),缺r--(读权),ls就失败,侧边栏空白,Atom 控制台(View → Developer → Toggle Developer Tools)搜remote-ftp才能看到Permission denied - 服务器
/etc/ssh/sshd_config关了SFTPSubsystem,或禁用了密码登录(PasswordAuthentication no),但你又没配密钥 - 防火墙没放行 22 端口,
ssh -p 22 user@host都超时,插件只会卡在Connecting... -
local字段不用填——插件默认把当前项目根目录当本地起点;填错反而导致同步错位
真正能用的替代方案只有两个
一是换插件:用 ftp-remote-edit(基于现代 ssh2 库,支持密钥、代理跳转、多标签),二是弃插件:用 sshfs 挂载远程目录到本地文件系统。
-
ftp-remote-edit配置要点:Protocol必选SFTP;Private Key填绝对路径;Remote Path从/home/user开始,别碰/ -
sshfs挂载后,Atom 完全无感:File → Add Project Folder打开挂载点,搜索、跳转、Git 全部照常,编辑保存即实时同步 - macOS:
brew install sshfs,然后sshfs user@host:/path ~/mnt/remote -o follow_symlinks - Windows:装
WinFsp+SSHFS-Win,右键“Map network drive”,填sftp://user@host/path - Linux:确保用户在
fuse组,mkdir ~/mnt/remote,再运行sshfs user@host:/path ~/mnt/remote
真正麻烦的从来不是“怎么连”,而是密钥权限(chmod 600 ~/.ssh/id_rsa)、挂载点目录权限、fuse 用户组、sshd_config 的 AllowUsers 限制这些零散但致命的细节。漏一个,整个流程就卡在 Connecting... 不动。











