简介
FTP(文件传输协议)全称是:Very Secure FTP Server。 Vsftpd是linux类操作系统上运行的ftp服务器软件。
FTP会话时采用了两种通道:
控制通道:与ftp服务器进行沟通的通道,链接ftp发送ftp指令都是通过控制通道来完成的。
数据通道:数据通道和ftp服务器进行文件传输或则列表的通道
vsftp提供三种登陆方式:
1.匿名登录
2.本地用户登录
3.虚拟用户登录
vsftpd的特点:
1.较高的安全性需求
2.带宽的限制
3.创建支持虚拟用户
4.支持IPV6
5.中等偏上的性能
6.可分配虚拟IP
7.高速
工作原理
ftp协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port和Pasv方式
Port模式(主动模式)–> 默认
ftp客户端首先和ftp server的tcp 21端口建立连接,通过这个通道发送命令,客户端要接受数据的时候在这个通道上发送Port命令,Port命令包含了客户端用什么端口(一个大于1024的端口)接受数据,在传送数据的时候,服务器端通过自己的tcp 20端口发送数据。这个时候数据连接由server向client建立一个连接。
Port交互流程:
client端:client链接server的21端口,并发送用户名密码和一个随机在1024上的端口及port命令给server,表明采用主动模式,并开放那个随机的端口。
server端:server收到client发来的Port主动模式命令与端口后,会通过自己的20端口与client那个随机的端口连接后,进行数据传输。
Pasv模式(被动方式)
建立控制通道和Port模式类似,当客户端通过这个通道发送Pasv命令的时候,Ftp server打开了一个位于1024和5000之间的随机端口并且通知客户端在这个端口上进行传输数据请求,然后Ftp server将通过这个端口进行数据传输。这个时候数据连接由client向server建立连接。
Pasv交互流程
client端:client连接server的21号端口,发送用户名密码及pasv命令给server,表明采用被动模式。
server端:server收到client发来的pasv被动模式命令之后,把随机开放在1024上的端口告诉client,client再用自己的20 端口与server的那个随机端口进行连接后进行数据传输。
如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。
安装 (安装环境Ubuntu 14.04)
1 | $ sudo apt-get install vsftpd |
配置:
1 | $ sudo vi /etc/vsftpd.conf |
找到以下行:去掉#
anonymous_enable=NO //表示不允许匿名登录
local_enable=YES //设定本地用户可以访问
write_enable=YES //设定可以进行写操作
local_umask=022 //设定上传后文件的权限掩码
保存退出。
重启服务:
1 | $ sudo service vsftpd restart |
访问:
打开电脑资源管理器,输入(example):
ftp://192.168.0.107