安装vsftpd服务
使用vsftpd RPM安装包安装即可,如果可以访问YUM镜像源,通过dnf或者yum工具更加方便。
yum -y install vsftpd
启动vsftpd、查看服务状态
systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd
备份配置文件并进行配置
cp /etc/vsftpd/vsftpd.conf{,_bak}
~]# grep -E -v '^#|^$' /etc/vsftpd/vsftpd.conf
-- 默认放开的配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
-- 启用 chroot,限制本地用户到其主目录,不配置allow_writeable_chroot,会报OOP:chroot()失败错误。
chroot_local_user=YES
allow_writeable_chroot=YES
-- 可配可不配,用于放开哪些用户可以不用chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
-- 配置启用TLS/SSL显式加密
# 启用 SSL 功能
ssl_enable=YES
force_local_logins_ssl=YES# 指定服务器的 RSA 证书文件
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem# 允许使用 SSL/TLS 协议的最低版本(可选,根据需要设置)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=YES# 指定允许的加密套件(可选,根据需要设置)
ssl_ciphers=HIGH# 指定显式加密场景下,动态数据连接监听端口范围(默认范围比较大)。
注:这里只需要配置范围,不需要开启被动模式(无需配置:pasv_enable=Yes)
pasv_min_port=30000
pasv_max_port=30999
重启vsftpd服务
systemctl restart vsftpd
配置防火墙列外
如果不将动态数据连接监听端口范围放开访问会一直卡在获取目录列表上(vsftpd 读取目录列表失败)。
firewall-cmd --add-port 21/tcp --permanent
firewall-cmd --add-port 30000-30999/tcp --permanent
firewall-cmd --reload
开启SELinux的ftpd_full_access布尔值为on
setsebool -P ftpd_full_access on
或者干脆关掉SELinux。
setenforce 0
原因:
-
本地用户访问家目录:当需要让本地用户能够通过FTP访问其家目录时,仅在vsftpd配置文件中将
local_enable
设置为YES
可能还不够。因为SELinux默认会限制这种访问,导致用户无法正常登录或访问家目录中的文件。启用ftpd_full_access
后,SELinux将允许FTP进程访问用户的家目录,从而使用户能够正常进行文件传输等操作。
使用WinSCP访问
如果想使用命令行访问呢?这个就比较复杂了,我会另开一篇进行总结说明。
命令行以TLS/SSL显式加密方式访问FTP服务器https://blog.csdn.net/avatar_2009/article/details/148481334