温馨提示×

怎样搭建linux ftpserver

小樊
42
2026-09-14 09:22:21
栏目: 智能运维

下面以 Linux(Ubuntu / CentOS 通用思路) 为例,介绍如何搭建一个 FTPS(FTP over SSL/TLS)服务器
FTPS 是在传统 FTP 基础上增加了 TLS 加密,比普通 FTP 更安全。


一、选择 FTP 服务端软件

常用:

  • vsftpd(最流行、稳定,推荐)
  • ProFTPD(功能多,配置复杂)

以下以 vsftpd + FTPS 为例。


二、安装 vsftpd

Ubuntu / Debian

sudo apt update
sudo apt install vsftpd -y

CentOS / Rocky / Alma

sudo yum install vsftpd -y
# 或
sudo dnf install vsftpd -y

三、生成 SSL 证书(FTPS 必需)

方式 1:自签名证书(测试用)

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/vsftpd.key \
  -out /etc/ssl/certs/vsftpd.crt

方式 2:使用 Let’s Encrypt(生产推荐)

sudo apt install certbot -y
sudo certbot certonly --standalone -d ftp.example.com

证书路径一般为:

/etc/letsencrypt/live/ftp.example.com/fullchain.pem
/etc/letsencrypt/live/ftp.example.com/privkey.pem

四、配置 vsftpd(FTPS)

编辑配置文件:

sudo vim /etc/vsftpd.conf

基础 FTPS 配置示例

# 基本设置
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

# 被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP

# SSL / TLS
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

如果使用 Let’s Encrypt:

rsa_cert_file=/etc/letsencrypt/live/ftp.example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/ftp.example.com/privkey.pem

五、创建 FTP 用户

sudo useradd -m ftpuser
sudo passwd ftpuser

限制只能 FTP(不能 SSH 登录,可选):

sudo usermod -s /usr/sbin/nologin ftpuser

六、防火墙设置

UFW(Ubuntu)

sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp

firewalld(CentOS)

sudo firewall-cmd --add-port=21/tcp --permanent
sudo firewall-cmd --add-port=30000-31000/tcp --permanent
sudo firewall-cmd --reload

七、启动 vsftpd

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

八、客户端连接测试

使用:

  • FileZilla
  • WinSCP

连接参数:

主机:服务器IP或域名
协议:FTPS(显式加密)
端口:21
用户:ftpuser
密码:你设置的密码

九、常见问题

1. 连接超时

  • 检查防火墙
  • 检查 pasv_address 是否填公网 IP

2. 证书不受信任

  • 自签证书需手动信任
  • 生产环境用 Let’s Encrypt

3. 云服务器

  • 安全组必须放行 21 + 被动端口

如果你愿意,我可以:

  • 给你 Docker 版 FTPS
  • 配置 虚拟用户
  • 只读 / 限速 / 分目录权限

你用的是 哪类服务器(云 / 内网)和系统版本

0