Vsftpd(very secure FTP deamon)是众多Linux发行版中默认的FTP服务器。本文以CentOS 8(腾讯云)服务器为例,使用vsftpd搭建Linux云服务器的FTP服务器。
环境
CentOS 8(1核2GB,1Mbps) 64位 ,已安装Docker(CentOS 8 的docker安装 https://www.cnblogs.com/luyj00436/p/14515187.html)。
步骤
步骤1:登录云服务器
登录服务器的方法有三种。根据情况选择合适的。
步骤2:安装vsftpd.
1. 安装vsftpd。
yum install -y vsftpd
2. 设置vsftpd开机启动。
systemctl enable vsftpd
3. 启动FTP服务。
systemctl start vsftpd
4. 确认服务是否启动。
netstat -antup | grep ftp
显示结果如下,则说明服务已成功启动。
此时,vsftpd已默认开启匿名访问模式,无需通过用户名和密码即可登录FTP服务器,使用此方法登录FTP服务器的用户没有权限修改或上传文件的权限。
步骤3:配置vsftpd
1. 为FTP服务器创建一个Linux用户,本文以ftpuser为例。
useradd ftpuser
2. 设置ftpuser用户名的密码。
passwd ftpuser
输入密码后请安Enter确认设置,密码默认不显示,本文以tf7295TFY
为例。
3. 创建FTP服务使用的文件目录,本文以/var/ftp/test为例。
mkdir /var/ftp/test
4. 修改目录权限。
chown -R ftpuser:ftpuser /var/ftp/test
5. 打开vsftp.conf文件。
vim /etc/vsftpd/vsftpd.conf
6. 按i切换至编辑模式,根据实际需求选择FTP模式,修改配置文件vsftp.conf。
注:FTP可通过主动模式和被动模式与客户机进行连接并传输数据。由于大多受客户端机器的防火墙设置无法获取真实IP等原因,建议选择被动模式下搭建FTP服务。以下以被动模式为例。如果需要主动模式,请参考:主动模式。
1) 修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启IPv4 sockets。
1 anonymous_enable=NO 2 local_enable=YES 3 chroot_local_user=YES 4 chroot_list_enable=YES 5 chroot_list_file=/etc/vsftpd/chroot_list 6 listen=YES
2) 在行首添加#,注释listen_Ipv6=YES配置参数,关闭IPv6 sockets。
#listen_ipv6=YES
3) 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及服务器建立数据传输可使用的端口范围值。
1 local_root=/var/ftp/test 2 allow_writeable_chroot=YES 3 pasv_enable=YES 4 pasv_address=xxx.xx.xxx.xx #请修改为您的 Linux 云服务器公网 IP 5 pasv_min_port=40000 6 pasv_max_port=45000
7. 按ESC后输入:wq保存后退出。
8. 创建并编辑chroot_list文件。
vim /etc/vsftpd/chroot_list
9.按i进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按Esc并输入:wq保存后退出。您若没有设置例外用户的需求,看跳过此步骤,输入:wq退出文件。
10. 重启FTP服务器。
1 systemctl restart vsftpd
步骤4:设置安全组
搭建好FTP服务后,您需要根据实际使用的FTP模式给Linux云服务器放入入站规则,详情请参考添加安全组规则。
大多数客户端及其在局域网中,IP地址经过转换的,如果您选择了FTP主动模式,请确保客户端机器已获取真实的IP地址,否则可能会导致无法登录FTP服务器。
- 主动模式:放通端口21。
- 被动模式:放通端口21,,及修改配置文件中设置的pasv_min_port到pasv_max_port之间的所有端口,本文放通端口为40000~45000。
步骤5:验证ftp服务
您可通过FTP客户端软件、浏览器或文件资源管理器等工具验证FTP服务,本文以客户端的文件资源管理器为例。
1. 打开客户端的IE浏览器,选择【工具】>【Internet选项】>【高级】,根据您的FTP模式进行修改:
- 主动模式:取消勾选【使用被动FTP】
- 被动模式: 勾选【使用被动FTP】。
2. 打开客户端计算机,在路径栏中访问以下地址,如下图所示:
3. 在弹出的“登录身份”窗口输入已设置的用户名及密码。
本文使用的用户名为 ftpuser
,密码为 tf7295TFY
。
4. 成功登录后,即可上传和下载文件。
附录
设置FTP主动模式
主动模式需修改的配置如下,其他配置保持默认设置:
1 anonymous_enable=NO #禁止匿名用户登录 2 local_enable=YES #支持本地用户登录 3 chroot_local_user=YES #全部用户被限制在主目录 4 chroot_list_enable=YES #启用例外用户名单 5 chroot_list_file=/etc/vsftpd/chroot_list #指定用户列表文件,该列表中的用户不被锁定在主目录 6 listen=YES #监听IPv4 sockets 7 #在行首添加#注释掉以下参数 8 #listen_ipv6=YES #关闭监听IPv6 sockets 9 #添加下列参数 10 allow_writeable_chroot=YES 11 local_root=/var/ftp/test #设置本地用户登录后所在的目录
按ESC后输入:wq保存后退出。并继续完成剩余的步骤。然后重启FTP服务。
FTP客户端上传文件失败
Linux系统环境下,通过vsftp上传文件时,提示如下报错信息。
553 Could not create file
解决方法
1. 检查服务器磁盘的使用率。
df -h
如果磁盘空间不足,将会导致文件无法上传,建议删除磁盘容量较大的文件。
- 如果磁盘空间正常,请执行下一步。
2. 检查FTP目录是否有写的权限。
1 ls -l /home/test 2 # /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
- 若返回结果没有w,则表示该用户没有写的权限,请执行下一步。
- 若返回结果已有w,请提交工单进行反馈。
3. 为FTP目录加上写的权限。
1 chmod +w /home/test 2 # /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
4. 重新检查写权限是否设置成功。
1 ls -l /home/test 2 # /home/test 为 FTP 目录,请修改为您实际的 FTP 目录。
参考网址
Linux 云服务器搭建 FTP 服务: https://cloud.tencent.com/document/product/213/10912