Linux:服务器(CentOS)搭建FTP服务

时间:2024-02-22 20:10:30

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 #设置本地用户登录后所在的目录
FTP主动模式配置

  按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