温馨提示×

centos怎么配置ftpserver

小樊
57
2026-09-06 04:23:37
栏目: 智能运维

在 CentOS 上配置 FTPS(FTP over SSL/TLS),通常推荐使用 vsftpd(Very Secure FTP Daemon)。下面以 CentOS 7 / 8 / Stream 为例,说明从安装到配置 FTPS 的完整步骤。


一、安装 vsftpd

yum install -y vsftpd
# 或 CentOS 8 / Stream
dnf install -y vsftpd

启动并设置开机自启:

systemctl enable vsftpd
systemctl start vsftpd

二、生成 SSL 证书(用于 FTPS)

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

openssl req -x509 -nodes -days 365 \
-keyout /etc/vsftpd/vsftpd.pem \
-out /etc/vsftpd/vsftpd.pem

按提示填写信息即可。

方式 2:使用已有证书(推荐生产环境)

将你的 cert.pemkey.pem 放到:

/etc/vsftpd/

三、配置 vsftpd(FTPS)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

基础 FTPS 配置示例

# 启用 FTP
listen=YES
listen_ipv6=NO

# 禁止匿名
anonymous_enable=NO
local_enable=YES
write_enable=YES

# 被动模式(云服务器必须)
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

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem

# 用户限制
chroot_local_user=YES
allow_writeable_chroot=YES

四、防火墙配置

firewalld

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

SELinux(非常重要)

setsebool -P ftpd_full_access on

如仍报错:

getsebool -a | grep ftp

五、创建 FTP 用户

useradd ftpuser
passwd ftpuser

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

usermod -s /sbin/nologin ftpuser

六、客户端连接方式

  • 显式 FTPS(推荐)
    • 端口:21
    • FileZilla → 协议选 FTP over TLS
  • 隐式 FTPS
    • 端口:990(vsftpd 默认不推荐)

七、常见问题排查

1. 能登录但无法列目录

  • 检查被动端口是否开放
  • pasv_address 是否填写正确

2. 530 Login incorrect

  • 用户被锁定
  • SELinux / PAM 问题

3. 证书不受信任

  • 使用自签名证书,客户端需手动信任

八、推荐替代方案(更安全)

如果对环境安全性要求高,建议:

  • SFTP(SSH)
  • ProFTPD + TLS

如果你告诉我:

  • CentOS 具体版本
  • 云服务器还是物理机
  • 是否需要匿名 / 多用户

我可以给你一套定制化配置

0