核心概念:FTP 服务器地址是什么?
在你开始之前,先理解几个关键点:

- 服务器地址:这通常是你服务器的公网 IP 地址(
0.113.55)或域名(ftp.mydomain.com),用户需要在 FTP 客户端(如 FileZilla)中输入这个地址来连接。 - FTP 端口:标准的 FTP 服务使用 21号端口 进行连接控制和命令传输,数据传输会使用另一个临时端口(20号或一个高位动态端口)。
- 用户名和密码:你需要为 FTP 用户创建一个账户,他们使用这个凭据来登录和访问文件。
第一步:选择并安装 FTP 服务器软件
根据你的服务器操作系统,选择合适的软件。
在 Linux (如 Ubuntu/CentOS) 上安装 vsftpd (非常安全,推荐)
vsftpd (Very Secure FTP Daemon) 是 Linux 下最流行、最安全的 FTP 服务器之一。
安装 vsftpd
-
对于 Ubuntu/Debian:
(图片来源网络,侵删)sudo apt update sudo apt install vsftpd
-
对于 CentOS/RHEL:
sudo yum install vsftpd # 或者对于较新的系统 sudo dnf install vsftpd
启动并设置开机自启
sudo systemctl start vsftpd sudo systemctl enable vsftpd
检查服务状态
sudo systemctl status vsftpd
你应该看到 active (running) 的状态。

在 Windows Server 上安装 IIS FTP 服务
如果你使用的是 Windows Server,可以利用自带的 IIS (Internet Information Services) 来搭建 FTP 服务器。
安装 IIS 和 FTP 服务
- 打开 "服务器管理器"。
- 点击 "管理" -> "添加角色和功能"。
- 在 "功能" 页面,展开 "Web 服务器 (IIS)"。
- 展开 "FTP 服务器",勾选 "FTP 服务" 和 "FTP 扩展"。
- 点击 "安装"。
配置 FTP 站点
-
安装完成后,打开 "Internet Information Services (IIS) 管理器"。
-
在左侧的 "连接" 窗格中,右键点击你的服务器名称,选择 "添加 FTP 站点..."。
-
站点信息:
- FTP 站点名称: 给你的站点起个名字,"My FTP Site"。
- 物理路径: 选择你希望用户访问的文件夹路径,
C:\inetpub\ftproot,你可以提前创建好这个文件夹并放入一些测试文件。
-
绑定和 SSL:
- IP 地址: 选择服务器的 IP 地址,如果不确定,选择 "全部未分配"。
- 端口: 默认为
21。 - SSL: 强烈建议选择 "需要 SSL",这可以加密用户名和密码,防止被窃听,你需要先为服务器配置一个 SSL 证书(可以使用 IIS 自带的测试证书)。
-
身份验证和授权:
- 匿名: 取消勾选 "匿名"。
- 基本: 勾选 "基本"。注意:基本身份验证会以明文传输密码,因此必须配合 SSL 使用!
- 授权:
- 权限: 选择 "读取" 和 "写入"。
- 用户: 选择 "特定用户"。
- 指定用户: 点击 "添加",输入你希望允许访问的 Windows 用户名(
ftpuser),你需要提前在 Windows 中创建这个用户账户(通过 "计算机管理" -> "本地用户和组")。
-
完成向导,FTP 站点就创建好了。
第二步:配置防火墙(至关重要!)
你的服务器必须允许 FTP 流量通过防火墙。
在 Linux (使用 ufw 防火墙) 上
# 允许 FTP 端口 21 sudo ufw allow 21/tcp # 如果你想允许被动模式(推荐),还需要允许一个端口范围 # 假设你配置的被动端口范围是 60000-61000 sudo ufw allow 60000:61000/tcp # 重新加载防火墙 sudo ufw reload
在 Windows Server 上
- 打开 "高级安全 Windows Defender 防火墙"。
- 在右侧点击 "入站规则"。
- 在右侧操作栏点击 "新建规则..."。
- 选择 "端口",点击 "下一步"。
- 选择 "TCP",在 "特定本地端口" 中输入
21,点击 "下一步"。 - 选择 "允许连接",点击 "下一步"。
- 勾选所有配置文件(域、专用、公用),点击 "下一步"。
- 给规则起个名字,"Allow FTP Port 21",点击 "完成"。
对于被动模式,你也需要为端口范围(如 60000-61000)创建一个类似的入站规则。
第三步:配置 FTP 服务器
Linux (vsftpd) 配置
使用 nano 或 vim 编辑配置文件:
sudo nano /etc/vsftpd.conf
以下是一些关键的配置项,请根据需要修改:
# 禁止匿名用户登录 anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 允许写入文件 write_enable=YES # 将用户限制在其主目录中 (非常重要!防止用户跳出主目录) chroot_local_user=YES # 启用被动模式 (强烈推荐,因为主动模式容易受防火墙影响) pasv_enable=YES pasv_min_port=60000 pasv_max_port=61000 # 日志记录 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
重要安全提示 (chroot jail):
当 chroot_local_user=YES 时,用户被限制在主目录,但为了安全,vsftpd 要求该目录不能有写权限,否则会报错 "500 OOPS: vsftpd: refusing to run with writable root inside chroot()"。
解决方法:将主目录的所有权改为 root,并设置 user_sub_dir 和 local_root。
假设你的 FTP 用户是 ftpuser,主目录是 /home/ftpuser。
# 1. 修改主目录所有者为 root sudo chown root:root /home/ftpuser # 2. 在 vsftpd.conf 中添加以下配置 user_sub_dir=YES local_root=/home/$USER
保存文件后,重启 vsftpd 服务:
sudo systemctl restart vsftpd
Windows Server (IIS) 配置
大部分配置在创建站点时已经完成,你可以在 "IIS 管理器" 中右键点击你的 FTP 站点,选择 "FTP 编辑器..." 来进行更详细的调整,
- 连接限制:可以设置最大连接数。
- 日志记录:可以开启日志记录。
第四步:创建 FTP 用户
在 Linux 上
# 创建一个新用户,ftpuser sudo adduser ftpuser # 系统会提示你设置密码 # (可选) 设置密码 sudo passwd ftpuser
这个用户现在就可以用它的用户名和密码登录 FTP 了。
在 Windows Server 上
- 打开 "计算机管理"。
- 导航到 "本地用户和组" -> "用户"。
- 右键点击 "用户",选择 "新用户"。
- 输入用户名(
ftpuser)、密码等信息,创建用户。
第五步:获取你的服务器地址并测试
-
找到你的公网 IP 地址:
- 在 Linux 服务器上运行:
curl ifconfig.me或curl ipinfo.io - 在 Windows 服务器上,可以访问
https://www.whatismyip.com/等网站。
- 在 Linux 服务器上运行:
-
使用 FTP 客户端测试:
- 推荐使用 FileZilla 这样的免费客户端。
- 打开 FileZilla,在主机栏输入你的公网 IP 地址或域名。
- 输入你创建的用户名和密码。
- 端口保持
21。 - 点击 "快速连接"。
如果一切配置正确,你应该能够成功连接,并看到你设置的 FTP 目录下的文件。
高级安全建议
-
使用 SFTP 代替 FTP:
- 强烈建议! FTP 是一种非常古老且不安全的协议,所有数据(包括密码)都是明文传输。
- SFTP (SSH File Transfer Protocol) 是基于 SSH 的,它对所有数据进行加密,是现代标准。
- 在 Linux 上,你不需要额外安装任何东西,因为 SSH 服务器通常默认已安装,用户只需使用 SFTP 客户端连接服务器的 22号端口 即可。
- 如果必须使用 FTP,请务必启用 SSL/TLS 加密(在 vsftpd 中是
ssl_enable=YES,在 IIS 中是 "需要 SSL")。
-
使用防火墙限制 IP:
如果你知道哪些 IP 地址需要访问 FTP,可以在防火墙上添加规则,只允许这些特定 IP 访问 21 端口,从而大大提高安全性。
-
定期更新:
保持你的操作系统和 FTP 服务器软件为最新版本,以修复已知的安全漏洞。
通过以上步骤,你就成功创建了一个功能完整且相对安全的 FTP 服务器,并获得了你的服务器地址。
