小白搭建ftp服务器(vsftpd centos8.2)

写在最前

服务器要求:本人使用阿里云ECS
系统:centos 8.2
使用前需要在阿里云安全组开启端口

  • 需要开启的端口号为:20/21
  • 配置方向:入方向
  • 协议类型:TCP
  • 授权对象:默认值

安装vsftpd

因为我用的是centos系统,所以在安装时使用的是yum命令,如果是ubuntu或者Debian系统,请使用apt-get命令。

yum install vsftpd
  • !使用yum命令需要使用管理员账户,请切换至root后再安装

配置vsftpd

!在修改配置前,请将原始配置文件备份一份

vsftpd相关的配置信息都被存放在 “/etc/vsftpd” 目录下,主配置文件为:vsftpd.conf
第一次打开vsftpd.conf,需要找到“Listen=NO”,将其改为YES,修改此项是为了打开vsftpd的ipv4监听,这样来自客户端的请求才能被接收。接着找到“listen——ipv6=YES”,将其改为NO,关闭IPV6监听。
接着打开这两项:
local_enable=YES #本地开关
write_enable=YES #写开关
打开后使用以下命令重启ftp服务:

systemctl start vsftpd.service

运行以下命令查看FTP服务监听的端口。

netstat -antup | grep ftp

出现如下图所示界面,表示FTP服务已启动,监听的端口号为 21。在这里插入图片描述

创建用户

  • 如果由本地用户,可以忽略,本步骤只限于测试使用

使用useradd命令来添加用户,passwd命令创建密码

建立目录

ftp的文件夹在“ /var/ftp”文件夹下,创建一个文件夹并将其授权给用户。涉及到mkdir和chown命令的使用

开启一些其他测试项

#
# 1. 监听相关
#
listen=<YES/NO>                     # YES: 服务以独立运行方式运行; NO: 运行在 xinetd 内。 默认为 YES
listen_address=<ip address>         # 服务监听地址, 如果有多个网卡, 需要将服务绑定到指定 IP 地址
listen_port=<port>                  # 服务监听端口, 默认为 21

#
# 2. 匿名用户相关
#
anonymous_enable=<YES/NO>           # 是否允许匿名用户访问, 默认 NO
anon_mkdir_write_enable=<YES/NO>    # 是否允许匿名用户创建文件夹, 默认 NO
anon_other_write_enable=<YES/NO>    # 是否允许匿名用户其他的写权限, 创建文件、重命名、删除文件等权限(默认为 NO, 基于安全性考虑这个权限一般不打开)
anon_upload_enable=<YES/NO>         # 是否允许匿名用户上传, 默认 NO
anon_umask=<nnn>                    # 匿名用户上传的文件的生成掩码, 默认为077
anon_max_rate=<n>                   # 匿名用户的最大传输速率, 单位为 Byte/s, 值为 0 表示不限制
anon_world_readable_only=<YES/NO>   # 是否允许匿名用户只读浏览

#
# 3. 本地用户(Linux标准系统用户)相关
#
local_enable=<YES/NO>               # 是否支持本地用户帐号访问
write_enable=<YES/NO>               # 是否开放本地用户的写权限
local_umask=<nnn>                   # 本地用户上传的文件的生成掩码, 默认为077
local_max_rate=<n>                  # 本地用户最大的传输速率, 单位为 Byte/s,值为 0 表示不限制
local_root=<file>                   # 本地用户登陆后的目录,默认为 本地用户 的 主目录

chroot_local_user=<YES/NO>          # 本地用户是否可以执行 chroot, 默认为 NO
chroot_list_enable=<YES/NO>         # 是否只有指定的用户才能执行 chroot, 默认为 NO
chroot_list_file=<filename>         # 当 chroot_local_user=NO 且 chroot_list_enable=YES 时,
                                    # 只有 filename 文件内指定的用户(每行一个用户名)可以执行 chroot,
                                    # 默认值为 /etc/vsftpd.chroot_list

#
# 4. 本地用户 黑/白名单管理
#
userlist_enable=<YES/NO>    # 是否启用 userlist_file 白/黑名单用户列表, 默认为 NO

userlist_deny=<YES/NO>      # 当 userlist_enable=YES(即启用 userlist_file )时, 则该字段才有效。
                            # userlist_deny=YES: userlist_file 为 黑名单, 即在该文件内的用户均不可登录, 其他用户可以登录
                            # userlist_deny=NO:  userlist_file 为 白名单, 即在该文件内的用户才可以登录, 其他用户均不可登录

userlist_file=<filename>    # 黑/白名单用户列表文件(每行一个用户名), 
                            # 是黑名单还是白名单, 根据 userlist_deny 的值决定,
                            # 默认值为 /etc/vsftpd.user_list

#
# 5. 连接相关
#
ftpd_banner=<message>               # 客户端连接服务器后显示的欢迎信息
connect_timeout=<n>                 # 远程客户端响应端口数据连接超时时间, 单位为秒, 默认 60
accept_connection_timeout=<n>       # 空闲的数据连接超时时间, 单位为秒, 默认 120
data_connection_timeout=<n>         # 空闲的用户会话超时时间, 单位为秒, 默认 300
max_clients=<n>                     # 在独立模式运行时, 最大连接数, 0 表示无限制
max_per_ip=<n>                      # 在独立模式运行时, 每 IP 的最大连接数, 0表示无限制

根据自己的需要开启或关闭对应的功能
文件中没有注释的内容,可以在文件末尾添加

  • 在每次修改配置文件后,需要使用以下命令重启服务
systemctl restart vsftpd.service

ftp客户端测试

本地安装ftp客户端,在终端输入

ftp <公网IP><端口号>

未开启匿名用户请输入本机用户用户名及密码
开启匿名用户后输入“anonymous”为用户名,密码可缺省或者输入邮箱即可登录
相关的权限在上文,本部分不再赘述

当ftp服务器出现问题简单排障

先登录服务器,通过

systemctl status vsftpd.service

检查ftp服务是否已经成功启动

如果客户端无法连接到服务器,可以使用telnet直接建立客户端到指定服务器端口的TCP链接

telnet <公网IP> <端口号>

通过tcpdump抓包也可以看到此时是否存在链接
通过natstat命令查看端口是否开放,是否处在监听状态

ftp客户端的使用

PUT <要上传的文件的绝对地址> <要上传的位置>
GET <要下载的文件位置> <下载的位置>
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页