环境
测试主机:亚马逊AWS EC2
系统:Ubuntu 16.04
主动模式和被动模式
FTP是基于TCP的服务,使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。
主动模式:数据连接上,服务端从20端口去连接客户端大于1024的端口
命令连接:客户端 (>1024端口) ─> 服务器 21端口
数据连接:客户端 (>1024端口)<─ 服务器 20端口
优势:主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动模式:数据连接上,客户端从大于1024端口去连接服务端大于1024的端口
命令连接:客户端 (>1024端口) ─> 服务器 21端
数据连接:客户端 (>1024端口) ─> 服务器 (>1024端口)
优势:被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
查看是否已经安装ftp软件
which vsftpd //如果看到有vsftpd的目录说明服务器已经安装了ftp软件
sudo apt-get purge vsftpd //为了避免冲突,先卸载vsftpd
安装
sudo -s
apt-get update
apt-get install vsftpd
配置
cp /etc/vsftpd.conf /etc/vsftpd.conf.backup //备份配置文件
vim /etc/vsftpd.conf
设置匿名上传配置
listen=YES //FTP处于独立启动模式
anonymous_enable=YES //是否允许匿名访问,匿名帐户为 ftp和 anonymous
local_enable=YES //是否允许本地用户访问
write_enable=YES //允许本地用户访问时,是否允许他们有写入的权限
local_umask=022 //本地用户在写入文件时,这些文件默认的权限
anon_upload_enable=YES //是否允许匿名用户上传
anon_mkdir_write_enable=YES //是否允许匿名用户创建目录
dirmessage_enable=YES //使用者进入某个目录时是否显示由message_file指定的文件内容
xferlog_enable=YES //是否启用日志
connected_from_port_20=YES //是否允许从20的连接请求
xferlog_file=/var/log/vsftpd.log //日志文件的位置
xferlog_std_format=YES //是否用标准格式存储日志
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd //设置PAM认证服务的配置文件名,该文件位于/etc/pam.d目录下
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
端口开放
在安全组中开放相关端口
netstat -an | grep 21 //查看服务有没有启动
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
如果看到以上信息,证明ftp服务已经开启
启动停止重启FTP服务
service vsftpd status //查看ftp 服务器状态
service vsftpd start //启动ftp服务器
service vsftpd restart //重启ftp服务器