VSFTP 服务器概述
节所讲内容:
4.1 VSFTP 服务器概述
4.2 安装配置 VSFTP
服务器信息:
FTP 服务端:xuegod63 IP:192.168.1.63
FTP 客户端:xuegod64 IP:192.168.1.64
4.1 VSFTP 服务器概述
4.1.1 FTP 服务概述
FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它
们依照 FTP 协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用:Internet 上用来传送文件的协议。
常见 FTP 服务器:
Windows:Serv-U 、FTP Server、filezilla_server
Linux:ProFTPD:(Professional FTP daemon)一个 Unix 平台上或是类 Unix 平台上(如 Linux, FreeBSD 等)的 FTP 服务器程序。
4.1.2 本节主讲:VSFTP
VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
特点: 它是一个安全、高速、稳定的 FTP 服务器。
VSFTP 模式: C/S 模式
监听端口:20、21
[root@xuegod64 ~]# vim /etc/services #查看 services 文件,如图 4-1 所示。
图 4-1 FTP 端口
FTP 监听的端口有两个:
端口 20:用于传输数据
端口 21:用于传输指令
4.1.3 工作流程(原理)分为两种模式:
主动和被动模式:
FTP 会话包含了两个通道,控制通道和数据传输通道,FTP 的工作有两种模式,一种是主动模式,一种是被动模式,以 FTP Server 为参照,主动模式,服务器主动连接客户端传输;被动模式,等待客户的连接。
主动模式的工作原理:
FTP 客户端连接到 FTP 服务器的 21 号端口,发送用户名和密码,客户端随机开放一个端口(1024
以上),发送 PORT 命令到 FTP 服务器,告知服务器客户端采用主动模式并开放端口,FTP 服务器收到 PORT主动模式命令和端口后,通过服务器的 20 号端口和客户端开放的端口连接,发送数据,原理如图 4-2 所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)
图 4-2 FTP 主动模式工作原理图
被动模式的工作原理:
PASV 是 Passive 的缩写,中文成为被动模式,工作原理:FTP 客户端连接到 FTP 服务器所监听的
21 号端口,发送用户名和密码,发送 PASV 命令到 FTP 服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输,原理如图 4-3 所示。
图 4-3 FTP 被动模式工作原理图
注:以上的说明主动和被动,是相对于的 FTP server 端而判断,如果 server 去连接 client 开放的端口,说明是主动的,相反,如果 client 去连接 server 开放的端口,则是被动。
4.2 安装 vsftp 服务器端、客户端
使用 rpm 安装本地光盘中的 vsftp 程序包:
[root@xuegod63 ~]# rpm -ivh /mnt/cd/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
或:
使用 Yum 直接安装(两种安装方法,选取其中一种即可):
[root@xuegod63 ~]# yum -y install vsftpd
4.2.1 安装客户端:
[root@xuegod64 ~]# yum install -y lftp #使用 Yum 安装 ftp 客户端。
lftp
注:从 CentOS 开始,系统镜像中默认没有 ftp 客户端命令。取而代之的是 lftp 命令。
Linux 客户端: lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp、ftps、http、https、hftp、fish(其中 ftps 和 https 需要在编译的时候包含 openssl 库),llftp 的界面非常类似一个 Shell,有命令补全、历史记录、允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载、等功能。
4.2.2 配置文件位置:
vsftpd 相关文档:
/etc/vsftpd/vsftpd.conf #vsftpd 的核心配置文件。
/etc/vsftpd/ftpusers #用于指定哪些用户不能访问 FTP 服务器,即黑名单。
/etc/vsftpd/user_list #指定允许使用 VSFTP 的用户列表文件,即白名单。
[root@xuegod63 ~]# vim /etc/vsftpd/user_list #查看 user_list 文件,如图 4-4 所示。
图 4-4 VSFTP 的用户列表文件
图 4-4 中的说明:如果 userlist_deny= YES(默认),绝不允许在这个文件中的用户登录 ftp,甚至不提示输入密码。
/etc/vsftpd/vsftpd_conf_migrate.sh #是 vsftpd 操作的一些变量和设置脚本
/var/ftp/ #默认情况下匿名用户的根目录
4.2.3 启动服务
[root@xuegod63 vsftpd]# systemctl start vsftpd #启动 FTP 服务。
[root@xuegod63 vsftpd]# systemctl enable vsftpd #设置开启自动启动 FTP 服务。
#注意关闭 iptables 和 SElinux
[root@xuegod63 ~]# netstat -antup | grep ftp #查看 FTP 服务监听的端口。
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11725/vsftpd
思考:以上内容中说明 FTP 监听两个端口,但目前 FTP 已经启动了,但经过查看,只查看到 21 号端口,还有 20 号端口没有查看到?是因为没有数据传输,20 号端口是用于传输数据的,所以 20 号端口是尚未开启,如有数据传输时,20 号端口则会开启。
4.2.4 FTP 服务的使用方法
Linux 系统:以 xuegod63 主机示例(即服务端、客户端为一台主机)
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lftp-4.4.8-8.el7_3.2.x86_64.rpm # 安
装 FTP 客户端
[root@xuegod63 ~]# lftp 192.168.1.63 #连接 FTP 服务器。
Windows 系统:
通过浏览器访问或 打开文件夹,在地址栏输入地址:ftp://192.168.1.63/,如图 4-5 所示。
图 4-5 Windows 系统 FTP 客户端连接服务器