温馨提示×

Debian上FileZilla连接不上服务器

小樊
44
2026-01-01 09:54:08
栏目: 云计算

Debian 上 FileZilla 连不上服务器的排查与修复

一、先快速定位问题

  • 明确协议与端口:是 SFTP(SSH,端口 22) 还是 FTP(端口 21)。在 FileZilla 的站点管理器里选择正确的协议与端口,输入正确的用户名与密码。
  • 看客户端报错:在 编辑 → 消息日志 观察具体提示,如 ECONNREFUSED(连接被拒绝)超时、TLS 握手失败等,先据此判断是服务未起、端口不通还是认证问题。
  • 测网络连通:在客户端执行 ping 服务器IP;对 FTP 额外测试控制端口 nc -vz 服务器IP 21,对 SFTP 测试 nc -vz 服务器IP 22
  • 查服务与端口监听:在服务器上确认对应服务是否运行并监听正确端口,例如 sudo systemctl status vsftpd(FTP)或 sudo systemctl status ssh(SFTP),并用 ss -ltnp | grep -E '(:21|:22)' 查看监听状态。
  • 防火墙与云安全组:确保放行 21/22 以及 FTP 被动模式端口范围(见下文),云服务器还需在控制台放行对应端口。

二、按协议分别排查

  • SFTP(推荐,基于 SSH)
    • 确认 SSH 服务运行:sudo systemctl start ssh && sudo systemctl enable ssh
    • 若用密钥登录,确保私钥格式与权限正确(FileZilla 使用 OpenSSH 私钥,如 id_rsa,而非 PuTTY 的 .ppk;必要时用 ssh-keygen -p -m PEM -f ~/.ssh/id_rsa 转换)。
    • 服务器认证日志:sudo tail -f /var/log/auth.log 可看到登录尝试与拒绝原因。
  • FTP(明文或 TLS)
    • 安装并启动 vsftpd:sudo apt-get install vsftpd && sudo systemctl start vsftpd && sudo systemctl enable vsftpd
    • 基本配置(/etc/vsftpd.conf):启用本地用户、写权限、chroot 等,例如:
      • anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YES
    • 被动模式端口范围(示例):pasv_enable=YESpasv_min_port=40000pasv_max_port=50000;若服务器在 NAT 后,设置 pasv_address=你的公网IP
    • TLS 加密(可选但推荐):在 vsftpd 启用 ssl_enable=YES 并配置证书;FileZilla 端在 编辑 → 设置 → 传输 → FTP over TLS 设置 勾选“启用 FTP over TLS 支持”。

三、防火墙与端口放行

  • FTP(控制与数据)
    • 放行控制端口与被动端口范围(示例为 40000–50000):
      • sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT
      • sudo iptables -I INPUT -p tcp --dport 40000:50000 -j ACCEPT
      • 如为主动模式,通常还需放行数据端口 20sudo iptables -I INPUT -p tcp --dport 20 -j ACCEPT
      • 保存规则:sudo iptables-save | sudo tee /etc/iptables/rules.v4
  • SFTP
    • 放行 22 端口:sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
  • 云服务器
    • 安全组/防火墙 中同样放行 21/22 与 FTP 被动端口范围(如 40000–50000)。

四、常见报错对照与修复

  • ECONNREFUSED(连接被拒绝)
    • 含义:目标端口无服务监听。
    • 处理:确认 vsftpd/ssh 已启动并监听 21/22;检查端口是否被占用或配置错误。
  • 超时(Timeout)
    • 含义:被防火墙/安全组/运营商拦截或 NAT 未正确回指被动地址。
    • 处理:放行 21/22 与被动端口范围;FTP 在 vsftpd 设置 pasv_address=公网IP;必要时改用 SFTP(22) 规避 FTP 复杂端口问题。
  • 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    • 含义:启用了 chroot 时主目录不可写。
    • 处理:将可写目录放到主目录下的子目录(如 uploads),并对主目录去掉写权限:chmod a-w /home/ftpuserchown ftpuser:ftpuser /home/ftpuser/uploads
  • 500 OOPS: cannot read user list file
    • 含义:配置的用户列表文件不存在或不可读。
    • 处理:创建文件(如 /etc/vsftpd.user_list)并写入允许的用户名,确保配置 userlist_enable=YESuserlist_fileuserlist_deny 正确。
  • TLS 握手失败或证书不受信任
    • 处理:在 vsftpd 正确启用 TLS 并配置证书;FileZilla 端在 FTP over TLS 设置 中启用并信任服务器证书。

五、最快可行的两条路径

  • 优先方案:改用 SFTP(端口 22)
    • 服务器:sudo systemctl start ssh && sudo systemctl enable ssh
    • 客户端:站点管理器协议选 SFTP,端口 22,使用用户名/密码或 OpenSSH 私钥 登录。
  • 必须用 FTP:启用 被动模式 并放行端口
    • vsftpd 配置:pasv_enable=YESpasv_min_port=40000pasv_max_port=50000,如 NAT 后设置 pasv_address=公网IP
    • 防火墙/安全组:放行 2140000–50000;客户端使用 FTP over TLS 更安全。

0