在 Ubuntu 上使用 FileZilla 的端口转发设置
一、先明确你的转发目标
- 使用 SFTP(SSH 文件传输协议):不需要额外端口转发,直接用 SFTP 协议 + 端口 22 连接即可,这是最简便且安全的方式。若你只是要把本地的某个端口“穿透”到服务器上,再让 FileZilla 通过 localhost 访问,可用 SSH 本地端口转发 实现。
- 使用 FTP(主动/被动模式):需要开放和控制一系列端口。主动模式由客户端发起数据连接,被动模式由服务器返回数据端口;在 NAT/云环境中,被动模式更常用,需要配置服务器的被动端口范围与防火墙放行。
二、方案一 SSH 本地端口转发(推荐)
- 适用场景:把本地的某个端口(如 8080)转发到远程服务器的 22(SFTP)或 80/3306 等服务端口,然后用 FileZilla 连接 localhost:本地端口 实现“穿透”。
- 步骤
- 在 Ubuntu 终端建立 SSH 隧道(保持该终端运行):
ssh -L 8080:localhost:22 user@your_server_ip
含义:把本地的 8080 转发到服务器的 22。
- 打开 FileZilla → 文件 → 站点管理器 → 新建站点:
- 协议:SFTP - SSH 文件传输协议
- 主机:127.0.0.1
- 端口:8080
- 登录类型:正常,填入你的用户名和密码/密钥
- 连接即可。需要转发到其他端口(如数据库 3306)时,将命令改为:
ssh -L 3306:localhost:3306 user@your_server_ip
然后在 FileZilla 用 SFTP 连接 localhost:3306(注意:SFTP 是文件传输协议,数据库直连请用相应客户端)。
- 说明:这是本地端口转发,不涉及 FTP 的主动/被动端口问题,配置简单、稳定。
三、方案二 FTP 场景的端口转发与被动模式配置
- 适用场景:必须使用 FTP 协议(明文或显式 FTPS),且客户端/服务器在 NAT/云环境。
- 服务器端(Ubuntu 上常见为 vsftpd)关键配置(/etc/vsftpd.conf):
- 启用被动模式与端口范围:
pasv_enable=YES
pasv_min_port=10090
pasv_max_port=10100
- 若服务器在 NAT 后,需告知外部地址:
pasv_address=你的公网IP或域名
- 重启服务:sudo systemctl restart vsftpd
- 防火墙放行(UFW 示例):
- 控制通道:sudo ufw allow 21/tcp
- 被动端口范围:sudo ufw allow 10090:10100/tcp
- 路由器/NAT 端口转发(若你的 Ubuntu 服务器本身在路由器后面):
- 将外部 21 转发到服务器内网 IP:21
- 将外部 10090–10100 转发到同一内网 IP:10090–10100
- FileZilla 站点设置:
- 协议:FTP - 文件传输协议 或 FTP over TLS(显式 FTPS)
- 加密:根据服务器选择“要求显式 FTP over TLS”或“仅使用普通 FTP”
- 登录类型:正常,填写用户名/密码
- 传输设置:勾选 被动模式(Passive)
- 说明:FTP 主动模式在 NAT 下常失败;使用被动模式并正确放行端口,通常可稳定连接。
四、常见排错要点
- 连接被防火墙拦截:确认 UFW/云安全组 已放行相应端口(SFTP 为 22;FTP 为 21 与被动端口段)。
- 路由器 NAT:若服务器在 NAT 后,除服务器本机防火墙外,还需在路由器做 21 与被动端口段 的转发。
- 虚拟机环境(VMware/VirtualBox):在虚拟网络编辑器中为 NAT 添加端口转发规则(如将宿主机 9988 → 虚拟机 192.168.137.128:22),再用 FileZilla 连接 localhost:9988。
- 协议选择:能用 SFTP 尽量用 SFTP,避免 FTP 的端口与模式复杂性。
- 被动模式提示:若看到 “You appear to be behind a NAT router…” 等提示,说明需要配置被动模式端口与转发。