自己最近有搞了不花钱的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
    #下面这几个选项与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服务,也就可以使用了。这样vsftpd搭建的ftp服务器基本就可以用了。

vsftpd_logo.png


配置 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

最后 拉个配置清单 sudo vim /etc/vsftpd.conf

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_addr_resolve=YES
pasv_address=ftp.domain.com
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

如果,系统开启了防火墙 ufw

那么我们需要开启ftp所用的端口

sudo ufw allow 20
sudo ufw allow 21
sudo ufw allow 61001:62000/tcp
sudo ufw reload #重启防火墙


上图更能说明问题

1571818382570416.png

这样就可以妥妥的上传文件了,剩下就看网速了。