安装ftp
sudo apt-get install vsftpd
参考vsftpd实现基于SSL的FTPS_小百菜的博客-CSDN博客_ssl vsftpd
的配置文件vsftpd.conf,但我的路径是/etc/vsftpd.conf,而不是/etc/vsftpd/vsftpd.conf。
可以先备份一份原始的配置文件,再改。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
创建新文件夹,再生成SSL证书
sudo mkdir /etc/vsftpd/.sslkey
sudo cd /etc/vsftpd/.sslkey
#生成密钥证书
sudo openssl req -new -x509 -nodes -days 3650 -out vsftpd.pem -keyout vsftpd.pem
注意,下面出现的这些多少填几个字母,随便怎么填就行,但不能留空。
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:省份拼音
Locality Name (eg, city) [Default City]:地市拼音
Organization Name (eg, company) [Default Company Ltd]:公司名称拼音
Organizational Unit Name (eg, section) []:你所在公司的部门拼音
Common Name (eg, your name or your server's hostname) []:域名或者ip
Email Address []:邮箱地址
同时,参考vsftpd.conf配置文件详解_独孤柯灵的博客-CSDN博客_vsftpd的配置文件在哪
结尾处对userlist_enable和userlist _deny选项不同时的讨论,增加userlist_deny=NO的设置。此时,/etc/vsftpd/user_list为白名单,在里面一行一个加上用户名字,例如:
xxxx
yyyy
zzzz
最终完整的配置文件vsftpd.conf如下
#是否允许使用匿名帐户
anonymous_enable=NO
#是否允许本地用户登录
local_enable=YES
#是否允许写入
write_enable=YES
#创建文件时的权限掩码,若没有文件掩码文件的默认权限为666,文件夹的默认权限为777。比如umask是022,你创建一个文件本来是666 就要 -022 = 644
local_umask=022
#进入每个目录是否显示欢迎信息,可在每个目录下建立.message文件在里面写欢迎信息
dirmessage_enable=YES
#上传/下载文件时记录日志
xferlog_enable=YES
#主动模式(PORT)有效,是否使用20端口传输数据
connect_from_port_20=YES
#主动模式(PORT)有效,设置connect_from_port_20=YES,自定义主动模式下传输数据的端口,默认20
#ftp_data_port=2020
#被动模式(PASV)有效,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0
#pasv_min_port=6000
#被动模式(PASV)有效,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0
#pasv_max_port=7000
#是否被动模式,若设置为YES,则使用PASV被动模式;若设置为NO,则使用PORT主动模式。默认值为YES
pasv_enable=NO
#日志文件
xferlog_file=/var/log/xferlog
#使用标准文件日志
xferlog_std_format=YES
#是否允许上传二进制文件
ascii_upload_enable=YES
#是否允许下载二进制文件
ascii_download_enable=YES
#是否允许切换到上级目录
chroot_local_user=YES
#设置是否启用下面chroot_list_file配置文件
chroot_list_enable=YES
#在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到根路径的上级路径;未在文件中列出的用户,则不能切换。
chroot_list_file=/etc/vsftpd/chroot_list
#自定义home目录
#local_root=/home/zhangjinhao/
#用户被限定在了其主目录下,需要配置该项
#allow_writeable_chroot=YES
#指定监听端口,默认21
listen_port=21
#开启ipv4监听,与listen_ipv6不能同时开启
listen=NO
#同时监听IPv4和IPv6的FTP请求
listen_ipv6=YES
#使用pam模块控制,文件位置/etc/pam.d/vsftpd
pam_service_name=vsftpd
#控制用户访问,/etc/vsftpd/user_list是一个黑名单,所有出现在名单中的用户都会被拒绝登入
userlist_enable=YES
userlist_deny=NO
#控制主机访问,检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。
tcp_wrappers=YES
#是否启用SSL,默认NO
ssl_enable=YES
#是否激活sslv2加密,默认NO
ssl_sslv2=YES
#是否激活sslv3加密,默认NO
ssl_sslv3=YES
#是否激活tls v1加密,默认NO
ssl_tlsv1=YES
#非匿名用户登陆时是否加密
force_local_logins_ssl=YES
#非匿名用户传输数据时是否加密
force_local_data_ssl=YES
#ssl证书位置
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
#是否启用隐式ssl功能,不建议开启
#implicit_ssl=YES
#隐式ftp端口设置,如果不设置,默认还是21,但是当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败
#listen_port=990
同时,根据chroot_list_file参数的需要,在/etc/vsftpd/chroot_list文件夹下,写上要登录ftp的用户名,一行一个,例如
xxxx
yyyy
zzzz
这几个用户,就可以切换到根路径的上级路径。
最后,FTP工具的登录设置,FIleZilla或winscp都可以
Filezilla设置:
弹出来的秘钥保存信任啥的,点击同意/信任/保存就行。
winscp的设置:
把被动模式钩掉,表示用主动模式。
还要设置证书文件,就是服务器上的/etc/vsftpd/.sslkey/vsftpd.pem,可以sudo cp一份到用户目录,再转为用户为owner,复制到本机上,将路径填入下面的验证参数。
弹出来的秘钥保存信任啥的,点击同意/信任/保存就行。
然后就可以看到服务器上的目录了。
不说了,开冲!