温馨提示×

ubuntu如何配置ftpserver

小樊
37
2026-07-18 18:06:58
栏目: 智能运维

在 Ubuntu 上配置 FTP 服务器(FTPS,即 FTP over SSL/TLS),最常用、稳定的方案是 vsftpd + SSL。下面我给你一个从零开始的完整配置示例,适合生产环境。


一、安装 vsftpd

sudo apt update
sudo apt install vsftpd -y

安装完成后,服务会自动启动:

sudo systemctl status vsftpd

二、准备 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 nano /etc/vsftpd.conf

✅ 推荐安全配置(可直接覆盖)

# 基础配置
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

# 安全限制
chroot_local_user=YES
allow_writeable_chroot=YES

# SSL / TLS(FTPS)
ssl_enable=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

force_local_data_ssl=YES
force_local_logins_ssl=YES

# 日志
xferlog_enable=YES
log_ftp_protocol=YES

如果你使用 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

四、开放防火墙端口

UFW 示例

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

五、重启 vsftpd

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

六、创建 FTP 用户(推荐方式)

sudo useradd -m ftpuser
sudo passwd ftpuser

限制只能通过 FTP 登录(可选):

sudo usermod -s /usr/sbin/nologin ftpuser

七、客户端连接方式

✅ 显式 FTPS(推荐)

  • 协议:FTP over TLS
  • 端口:21
  • 模式:被动模式
  • 客户端:FileZilla / WinSCP

FileZilla 设置:

加密:要求显式 FTP over TLS

八、常见问题排查

1️⃣ 无法连接

sudo ss -antp | grep vsftpd

2️⃣ 登录后目录错误

chown ftpuser:ftpuser /home/ftpuser

3️⃣ 证书不受信任(自签名)

客户端选择 信任证书 或使用受信任 CA 证书


九、进阶建议(安全)

✅ 禁用 root 登录
✅ 使用虚拟用户(pam_userdb)
✅ 使用 SFTP(SSH)替代 FTP(更安全)


十、我可以进一步帮你

你可以告诉我:

  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)
  • ✅ 是否公网服务器
  • ✅ 是否需要虚拟用户
  • ✅ 是否考虑用 SFTP 替代 FTPS

我可以给你 最小化 / 高安全 / 企业级 配置方案。

0