自己最近有搞了不花钱的VPS,但配置太低。Windows登录老是提醒系统内存不足。果断的放弃Windows server  换成 ubuntu server.

先配置个 ftp 让自己的资料可以传上去

一、安装vsftpd

sudo apt-get install vsftpd

可选执行

sudo apt-get update  #更新源
sudo apt-get upgrade #更新已安装的包


二、配置文件的修改

sudo vim /etc/vsftpd.conf


简单的修改下面几个选项

anonymous_enable=NO 拒绝匿名登陆

write_enable=YES 设置可以上传文件,这个设置看需要个人需要


local_root=/home/ubuntu/ftp   这个是系统给我创建的用户(ubuntu)我自己创建了一个目录ftp,这是配置ftp的默认根目录

chroot_local_user=YES
chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list  #这个是一个用户名文件列表

pam_service_name=vsftpd  #原配置中为vsftpd,ubuntu用户需要更改成ftp,这个用apt安装的包中是自动配置的

#下面这几个选项与ftp的运行模式有关

 pasv_enable=Yes

 pasv_min_port=10000

 pasv_max_port=10100

开启ASCII传输

ascii_upload_enable=YES

ascii_download_enable=YES


咱们是中英文混合,开启utf8

utf8_filesystem=YES 



三、添加用户名到 vsftpd.chroot_list

这个文件需要创建

sudo vim /etc/vsftpd.chroot_list

进入后添加一行 ubuntu(用户名),保存退出

四、配置用户

我的VPS是用公钥登录的,没有或不知道密码,则自己给用户ubuntu创建个密码

sudo passwd ubuntu

输入两次密码

五、重启vsftpd 

sudo systemctl start vsftpd 或 sudo service vsftpd start
sudo systemctl restart vsftpd 或 sudo service vsftpd restart

因为vsftpd在安装的时候已经把它安装成服务了,所以这么重启或启动,现在就能远程ftp登录了,上传下载文件都没问题。

六、配置防火墙(如果主机开启了防火墙),网关路由器(现在vps云中叫做安全组,修改对应的安全策略)的端口,使我们配置好的ftp服务可以正常运行。主要放行的端口是 20,21, 10000-10100在tcp协议上。


七、如果要创建单独的用户或多用户使用 ftp,那么需要创建用户,编辑权限和配置文件再修改


配置文件修改

注意这个配置项 chroot_list_file=/etc/vsftpd.chroot_list

修改这个配置项对应的文件 vsftpd.chroot_list 添加更多的用户名到此文件中,以便这些用户可以登录ftp

修改或添加下面的配置

user_sub_token=$USER

local_root=/home/$USER/ftp

添加一个user_sub_token ,以便插入用户名在我们local_root directory路径,以便我们的配置将为该用户,并可能被添加任何未来的用户。

创建用户和目录并设置权限,相关参考命令

mkdir /home/ftpuser  
sudo useradd ftpuser -d /home/ftpuser -m
sudo passwd ftpuser
mkdir /home/ftpuser/ftp
#下面这个username注意替换
chmod 777 -R /home/username/ftp

最后编辑 /etc/vsftpd.chroot_list文件 把ftpuser用户名和自己创建的各种用户的用户名放到文件中,再重启vsftpd服务,也就可以使用了。

配置 ssl 加密传输与登录  因为国内的网络,各种非法劫持太多了,昨天传了一个yii2的包,居然有好几个文件没有传上去,还以为是我配置的apache2出错了,原来是好几个文件没传上去,居然ftp客户端没有报传输失败的错误,所以果断的启用SSL传输加密。


修改一些配置项

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

#上面这两个秘钥可以自己用openssl 生成,也可以用配置文件中默认存在(亚马逊云VPS安装vsftpd是自己有的)的,我用的就是默认存在的秘钥文件


ssl_enable=YES

#拒绝ssl匿名连接,配置下面几项

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

#直接使用更好的TLS,不使用SSL,配置下面项目。

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

最后 拉个配置清单


listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

local_root=/home/ubuntu/ftp

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES         #如果是pasv模式,这个端口可以关闭的

ascii_upload_enable=YES

ascii_download_enable=YES

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

pasv_enable=Yes

pasv_min_port=10000

pasv_max_port=11000

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

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

utf8_filesystem=YES


上图更能说明问题

1571818382570416.png