FTP 是 File Transfer Protocol 的缩写,用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
安装 vsftpd 服务
vsftpd 是“very secure FTP daemon”的缩写,它是UNIX 类操作系统上的一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
这里使用yum
快速安装:
yum install vsftpd -y
启动 vsftpd 服务
systemctl enable vsftpd
systemctl start vsftpd
采用被动模式(PASV)
FTP协议有两种工作方式:PORT
方式和PASV
方式,中文意思为主动式和被动式。
PORT
(主动)方式的连接过程
客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了端口,你过来连接我”。于是服务器从20端口向客户端的端口发送连接请求,建立一条数据链路来传送数据。
PASV
(被动)方式的连接过程
客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了端口,你过来连接我”。于是客户端向服务器的端口发送连接请求,建立一条数据链路来传送数据。
配置被动模式
在配置文件/etc/vsftpd/vsftpd.conf
结尾增加:
pasv_enable=YES
pasv_min_port=6000
pasv_max_port=7000
然后重启vsftpd
服务使配置生效
systemctl restart vsftpd
开放端口
ftp 默认使用21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
这里使用被动模式(PASV),需要在FTP服务器软件上为PASV方式指定可用的端口范围:
firewall-cmd --zone=public --add-port=6000-7000/tcp --permanent
重载防火墙,使配置生效
firewall-cmd --reload
匿名用户登录
默认/etc/vsftpd/vsftpd.conf
文件里是开启匿名登录的anonymous_enable=YES
,匿名用户登录的用户名为anonymous
,密码为空,对应目录是/var/ftp
。
实体用户访问
添加一个用户用于ftp访问
useradd ftpuser -s /sbin/nologin
设置密码
passwd ftpuser
如果还登录不上,可以按照下面的操作:
查看/etc/shells
文件里是否存在/sbin/nologin
,如果不存在将其加到最后:
echo "/sbin/nologin" >> /etc/shells
因为,ftp
会根据/etc/shells
这个文件来判断一个用户是否是有效用户,会阻止那些shell
不在/etc/shells
里的用户登陆。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。