环境
- Centos 7 x64
- 25G SSD
- 1024MB 内存
- vsftpd 3.*
先更新下
[root@vultr ~]# yum update -y
然后使用yum安装
[root@vultr ~]# yum install vsftpd -y
安装完成以后编辑配置文件,在编辑前我们先备份在目录 /etc/vsftpd/下的配置文件
[root@vultr ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
编辑
[root@vultr ~]# vim /etc/vsftpd/vsftpd.conf
配置文件配置请跟随以下配置:
#不允许匿名用户登陆
anonymous_enable=NO
#允许本地用户登陆
local_enable=YES
#允许用户往目录写入文件
write_enable=YES
#默认会被注释需要需要去掉行前的#解除注释
#如果你希望用户在自己目录下而不是可以随意进入其他目录比如/ #,/etc等目录的话,请保留这个为YES。
#如果你希望用户可以随意进入其他目录的话就注释掉这句话
chroot_local_user=YES
在文件最后加入以下内容
#settings
allow_writeable_chroot=YES
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
保存并且退出文件
如果你希望可以使用root登陆vsftpd的话,在/etc/vsftpd/ftpusers 和/etc/vsftpd/user_list 文件内把root去掉
然后保存退出
但是我不建议这样做,因为可能会导致vsftpd无法启动
最后可以启动你的vsftpd了,再启动之前我们先检查下配置文件:
sudo /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
有错误的话会返回错误信息
启动
oot@vultr ~]# systemctl start vsftpd
然后创建开机自启
[root@vultr ~]# systemctl enable vsftpd
如果你想加入组的话使用以下命令创建组
[root@vultr ~]# groupadd ftpusersonlygroup
然后创建一个新的用户
[root@vultr ~]# useradd -m ftpuser -s /sbin/nologin -g ftpusersonlygroup
- -m 会自动的为ftpuser在/home目录下创建文件夹,如果你想指定文件路径的话使用:
-d /home/newuserfolder
就可以指定了- /sbin/nologin 会禁止使用SSH登陆只允许FTP登陆,如果强行使用SSH登陆的话将会返回拒绝信息“This account is currently not available”你可以自定义返回的信息,在 /etc/nologin.txt
然后更改密码
[root@vultr ~]# passwd ftpuser
然后创建ftpuser的根目录
[root@vultr ~]# mkdir /home/ftpuser/root
最后我们设置权限
[root@vultr ~]# chown root:root /home/ftpuser
[root@vultr ~]# chmod 755 /home
[root@vultr ~]# chmod 755 /home/ftpuser
[root@vultr ~]# chown ftpuser:ftpusersonlygroup /home/ftpuser/*
[root@vultr ~]# chmod 775 -R /home/ftpuser/*
ftpuser的所有者必须是root这样chroot才能正常工作.
[root@vultr ~]# chmod -R ugo+rw /home/ftpuser
最后配置防火墙开通端口
[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=21/tcp
[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=20/tcp
[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=22/tcp
[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=10000-10100/tcp
[root@vultr ~]# firewall-cmd --reload
如果你正在使用SELinux,为了确保不会出问题把你得ftp主目录加入白名单
[root@vultr ~]# setsebool -P home/joe on
以上就可以正常登陆ftp了,如果你登陆出现错误:
SFTP Connection Error Received unexpected end-of-file from SFTP server
请先检查/etc/ssh/sshd_config 配置文件下
# Subsystem sftp /usr/lib/openssh/sftp-server
是不是被注释了,如果是的话去掉#解除注释,然后更改为
Subsystem sftp internal-sftp
Reference
以下为可选内容,如果不想开启SFTP请跳过这里拉到最后
如果你想允许SFTP(secure ftp)的话,请按照以下步骤,他会把通信加密,端口是22,会更安全
首先安装SSH server
[root@vultr ~]# yum -y install openssh-server
打开 /etc/ssh/sshd_config文件然后把注释去掉
#subsystem sftp /usr/libexec/openssh/sftp-server
在vim下可以按下
/
然后输入想搜索的字符按回车 搜索下一个直接按n
然后增加以下内容:
Subsystem sftp internal-sftp
Match group ftpusersonlygroup
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
然后重启SSHD
[root@vultr ~]# systemctl restart sshd
最后附上一些别人总结的常见问题以及解决方案
vsftpDaemon搭建问题手册