CentOS 上 FileZilla 无法连接的排查与修复
一、先选对协议与快速验证
- 优先使用 SFTP(端口 22):在 FileZilla 站点管理器选择 SFTP - SSH File Transfer Protocol,主机填 CentOS 的 IP,端口 22,协议选 SFTP,认证用 用户名/密码 或 密钥。SFTP 基于 SSH,通常更稳定、更安全。若 SFTP 能连,而 FTP 不行,问题多半在 FTP 服务或被动模式配置。若 SFTP 也连不上,转向网络与 SSH 排查。
- 若必须用 FTP(端口 21):确保系统已安装并运行 vsftpd,且防火墙放行 21 端口(或放行 FTP 服务),并在 FileZilla 使用 FTP - Explicit over TLS(推荐)或普通 FTP。
二、SFTP 连不上时的排查清单
- 网络与地址
- 在客户端执行:ping <CentOS_IP>;在 CentOS 执行:ip addr 确认网卡(如 ens33)已获取 IP。虚拟机场景确认网络模式(桥接/NAT)与主机可达性。
- SSH 服务
- 检查状态:sudo systemctl status sshd;未运行则启动:sudo systemctl start sshd;必要时设为开机自启:sudo systemctl enable sshd。
- 防火墙
- firewalld:sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload。
- 如仍不通,临时排查可:sudo systemctl stop firewalld(测试后记得恢复)。
- 虚拟机网络
- 如使用 VMware,可在“虚拟网络编辑器”尝试 还原默认设置,并将 VMnet0 设为桥接 到主机网卡,再重启网络/系统测试。
- 认证与日志
- 确认用户名/密码正确;若使用密钥,确保私钥已加载到 Pageant 或 FileZilla 指定。
- 查看认证日志定位失败原因:/var/log/secure(RHEL/CentOS)或 /var/log/auth.log(Debian/Ubuntu)。
- 连接参数
- 站点管理器里协议选 SFTP,端口 22,登录类型选 正常 或 密钥,主机填 CentOS 的 IP。
三、必须用 FTP 时的排查清单
- 服务与端口
- 安装:sudo yum -y install vsftpd;启动:sudo systemctl start vsftpd;开机自启:sudo systemctl enable vsftpd。
- 检查监听:ss -tlnp | grep :21 或 netstat -an | grep ‘21’,应看到 0.0.0.0:21 LISTEN。
- 防火墙
- firewalld:sudo firewall-cmd --permanent --add-service=ftp && sudo firewall-cmd --reload;或放行端口:sudo firewall-cmd --permanent --add-port=21/tcp --permanent && sudo firewall-cmd --reload。
- 被动模式(PASV)
- 编辑 /etc/vsftpd/vsftpd.conf,开启并限制端口范围,例如:
- pasv_enable=YES
- pasv_min_port=10090
- pasv_max_port=10100
- 在 firewalld 放行该端口段:sudo firewall-cmd --permanent --add-port=10090-10100/tcp && sudo firewall-cmd --reload。
- 常见登录报错
- 530 Login incorrect:检查 /etc/vsftpd/ftpusers 与 /etc/vsftpd/user_list 是否禁用了该用户;若使用 nologin 等 shell,可能因 PAM 限制失败,编辑 /etc/pam.d/vsftpd,注释或调整 auth required pam_shells.so 后重启 vsftpd。
- 客户端设置
- 协议选 FTP - Explicit over TLS(推荐)或普通 FTP;若服务器不支持 TLS,可尝试普通 FTP,但存在明文传输风险。
四、常见报错对照与处理
| 现象 |
可能原因 |
快速处理 |
| Network error: Connection timed out |
网络不通、SSH/FTP 未运行、防火墙阻断、虚拟机网络模式不当 |
ping 测试;确认 sshd/vsftpd 运行;放行 22/21 或 SSH/FTP 服务;检查桥接/NAT 与 VMware 虚拟网络设置 |
| Connection refused |
目标端口未监听(sshd/vsftpd 未启动或配置错误) |
启动服务(sshd/vsftpd);核对监听端口与协议 |
| 530 Login incorrect |
用户名/密码错误、被 user_list/ftpusers 禁用、PAM 限制(如 pam_shells.so 与 nologin 冲突) |
核对凭据;检查禁用列表;按需调整 /etc/pam.d/vsftpd 并重启 vsftpd |
| 不安全的服务器,不支持 FTP over TLS |
客户端要求 TLS,服务器未启用 |
在 vsftpd 启用 TLS/SSL,或改用普通 FTP(不推荐) |
| 数据连接建立失败(被动模式) |
防火墙未放行 PASV 端口段 |
在 vsftpd.conf 设置 pasv_min_port/pasv_max_port,并在防火墙放行对应端口段 |
五、建议的最小可行配置示例
- SFTP(推荐)
- 服务端:确保 sshd 运行并放行 22/tcp(firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload)。
- FileZilla:协议 SFTP,主机 ,端口 22,登录类型 正常/密钥。
- FTP(可选)
- 服务端:安装并启动 vsftpd;/etc/vsftpd/vsftpd.conf 启用 PASV 端口段(如 10090–10100);放行 21/tcp 与 10090–10100/tcp。
- FileZilla:协议 FTP - Explicit over TLS,主机 ,端口 21。