基于ECS搭建FTP服务
1. 远程连接ECS服务器
2.运行以下命令安装vsftpd。
yum install -y vsftpd
Install 1 Package
Total download size: 172 k Installed size: 353 k Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm |
172 kB 00:00:00 Running transaction check Running transaction
test Transaction test succeeded Running transaction Warning: RPMDB
altered outside of yum. Installing : vsftpd-3.0.2-27.el7.x86_64
1/1 Verifying : vsftpd-3.0.2-27.el7.x86_64
1/1Installed: vsftpd.x86_64 0:3.0.2-27.el7
Complete!
3.运行以下命令设置FTP服务开机自启动。
systemctl enable vsftpd.service
Created symlink from
/etc/systemd/system/multi-user.target.wants/vsftpd.service to
/usr/lib/systemd/system/vsftpd.service.
4.启动FTP服务。
运行以下命令查看FTP服务监听的端口。
systemctl start vsftpd.service
netstat -antup | grep ftp
tcp6 0 0 :::21
LISTEN 1417/vsftpd
5.为FTP服务创建一个Linux用户。
[root@iZuf6dkalb4kt74jqcmupdZ ~]# adduser geqian
[root@iZuf6dkalb4kt74jqcmupdZ ~]# passwd geqian Changing password for
user geqian. New password: Retype new password: passwd: all
authentication tokens updated successfully.
6. 创建一个供FTP服务使用的文件目录。
mkdir /var/ftp/test
7. 更改/var/ftp/test目录的拥有者为ftptest
[root@iZuf6dkalb4kt74jqcmupdZ ~]# chown -R ftptest:ftptest /var/ftp/test
chown: invalid user: ‘ftptest:ftptest’
8.修改vsftpd.conf配置文件
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
9./etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单。
mkdir /etc/vsftpd/chroot_list
10.重启FTP服务
systemctl restart vsftpd.service
11.检查FTP是否启动
systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon Loaded: loaded
(/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset:
disabled) Active: failed (Result: exit-code) since Thu 2020-09-24
22:19:41 CST; 3s ago Process: 1490 ExecStart=/usr/sbin/vsftpd
/etc/vsftpd/vsftpd.conf (code=exited, status=2) Main PID: 1451
(code=killed, signal=TERM)Sep 24 22:19:41 iZuf6dkalb4kt74jqcmupdZ systemd[1]: Starting Vsftpd
ftp daemon… Sep 24 22:19:41 iZuf6dkalb4kt74jqcmupdZ vsftpd[1490]:
500 OOPS: unrecognised variable in config file: sed -i
's/anonymous_enable Sep 24 22:19:41 iZuf6dkalb4kt74jqcmupdZ
systemd[1]: vsftpd.service: control process exited, code=exited
status=2 Sep 24 22:19:41 iZuf6dkalb4kt74jqcmupdZ systemd[1]: Failed to
start Vsftpd ftp daemon. Sep 24 22:19:41 iZuf6dkalb4kt74jqcmupdZ
systemd[1]: Unit vsftpd.service entered failed state. Sep 24 22:19:41
iZuf6dkalb4kt74jqcmupdZ systemd[1]: vsftpd.service failed.
1.检查端口是否被占用
netstat -tlunp
Active Internet connections (only servers) Proto Recv-Q Send-Q Local
Address Foreign Address State PID/Progra tcp
0 0 0.0.0.0:22 0.0.0.0:* LISTEN
981/sshd udp 0 0 127.0.0.1:323 0.0.0.0:*
549/chrony udp 0 0 0.0.0.0:68 0.0.0.0:*
781/dhclie udp6 0 0 ::1:323 ::😗
549/chrony
2.查看配置文件
grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022
dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES
xferlog_std_format=YES listen=NO listen_ipv6=YESpam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
echo “allow_writeable_chroot=YES” >> /etc/vsftpd/vsftpd.conf
echo “allow_writeable_chroot=YES” >> /etc/vsftpd/vsftpd.conf
果然,配置文件写错了
修改配置文件并重启
[root@iZuf6b9d11wlslfktk222xZ ~]# vi /etc/vsftpd/vsftpd.conf
[root@iZuf6b9d11wlslfktk222xZ ~]# systemctl restart vsftpd.service
[root@iZuf6b9d11wlslfktk222xZ ~]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon Loaded: loaded
(/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset:
disabled) Active: active (running) since Thu 2020-09-24 22:51:17
CST; 4s ago Process: 1492 ExecStart=/usr/sbin/vsftpd
/etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID:
1493 (vsftpd) CGroup: /system.slice/vsftpd.service
└─1493 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confSep 24 22:51:17 iZuf6b9d11wlslfktk222xZ systemd[1]: Starting Vsftpd
ftp daemon… Sep 24 22:51:17 iZuf6b9d11wlslfktk222xZ systemd[1]:
Started Vsftpd ftp daemon.
查看浏览器端
ftp://<公网ip>:21