这篇 vsftp 的 ssl 配置在vsftp 的基础配置之上修改而来。
主要参考了这两篇文章:
[Linux] vsftpd配置ssl | zeven's blog
13.10 - vsftpd will not start with SSL enabled - Ask Ubuntu
目录
查询 vsftpd 是否支持 SSL
ldd /usr/sbin/vsftpd | grep ssl
生成 vsftpd.key 密钥文件及 vsftpd.pem 及证书文件
sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem
请注意使用 sudo 命令,否则会提示无权限。如果提示 problems making Certificate Request
,那么请将生成密钥及证书文件的路径换一个再试。
修改证书文件权限:
sudo chmod 400 /etc/vsftpd/vsftpd.{key,pem}
查看证书文件:
ls -lh /etc/vsftpd
修改主配置文件 vsftpd.conf
在 vsftpd.conf 增加以下内容:
allow_writeable_chroot=YES
allow_anon_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
force_local_logins_ssl=YES
force_local_data_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.key
require_ssl_reuse=no
pasv_enable=YES
pasv_min_port=80100
pasv_max_port=80101
请注意,vsftp 开启 ssl,主动模式是不能用的,必须使用被动模式,为考虑安全问题,可以指定被动端口的范围,如果是云服务器,可能要在管理后台的防火墙设置里开启相应的端口访问。
重启 vsftpd 服务
sudo service vsftpd restart
或
sudo systemctl restart vsftpd
测试 ftp ssl 连接
下载开源软件 filezilla,新建连接,配置如下:
加密栏选择:要求显示的 FTP over TLS。点击“连接”按钮。
弹出“未知证书”的提示框。点击“确定”按钮。
消息日志里提示连接成功:
远程目录树展示:
还可以使用 surgeftp 软件测试连接 FTP over TLS。