LINUX随笔六 FTP端口限制和ftpsftp脚本连接

一万年来谁著史,三千里外欲封侯。这篇文章主要讲述LINUX随笔六 FTP端口限制和ftpsftp脚本连接相关的知识,希望能为你提供帮助。
一、ftp主被动介绍FTP主动模式
1. 在主动模式下,客户端会开启N和N+1两个端口,N为客户端的命令端口,N+1为客户端的数据端口。
第一步,客户端使用端口N连接FTP服务器的命令端口21,建立控制连接并告诉服务器我这边开启了数据端口N+1。
第二步,在控制连接建立成功后,服务器会使用数据端口20,主动连接客户端的N+1端口以建立数据连接。这就是FTP主动模式的连接过程。
这里需要补充下,客户端的命令端口和数据端口实际中并不是有些文章写道的N和N+1的关系,两个端口比较接近而已。
2. 主动模式有什么利弊呢?
主动模式对FTP服务器的管理有利,因为FTP服务器只需要开启21端口的“准入”和20端口的“准出”即可。
但这种模式对客户端的管理不利,因为FTP服务器20端口连接客户端的数据端口时,有可能被客户端的防火墙拦截掉。

FTP被动模式
上面所讲的是FTP主动模式,简单的理解就是服务器的数据端口20主动连接客户端的数据端口,来建立数据连接,用来传输数据,这个数据连接的建立有可能被客户端防火墙拦截掉。
为了解决这个问题就衍生出另外一种连接模式---被动模式。被动模式也称为passive模式。
1. 被动模式是如何运作的呢
第一步,客户端的命令端口N主动连接服务器命令端口21,并发送PASV命令,告诉服务器用“被动模式”,控制连接建立成功后,服务器开启一个数据端口P,通过PORT命令将P端口告诉客户端。
第二步,客户端的数据端口N+1去连接服务器的数据端口P,建立数据连接。
默认情况
vsftp如果没做设置,默认情况下是被动模式,如果自己这边通过ftp连接服务器,那么自己机器就是通过21连接端口连接对方,使用20数据端口传输数据
二、用户创建及开启ftpuseradd tom -s /sbin/nologin
如果别的机器无法通过账号tom登录,可以查看服务器cat /etc/shells
添加
/sbin/nologin
三、端口限制默认主动模式,连接端口21,数据端口20
有些时候因为安全限制,不允许开启20和21端口给ftp使用

/etc/vsftpd/vsftpd.conf
pasv_enable=YES ##允许开启被动模式
anonymous_enable=NO ##关闭匿名用户登录
connect_from_port_20=NO #不使用20作为数据端口
listen_port=9999 ##作为连接端口
pasv_min_port=10000 #最小数据端口
pasv_max_port=10000 #最大数据端口,当最大最小都一样的时候,表示数据端口只能使用1000

重启vsftpd服务
systemctl restart vsftpd
此时如果使用配置好的ftp连接默认服务器
就会本地开启9999连接端口连接对方的21
本地开始10000数据端口连接对方的20
如果数据端口最大最小值是一个范围,则会随机使用范围内的数据端口连接对方20
四、脚本编写ftp方式

ftp -n < < EOF
open $host$port
user $username $pwd
passive #开启被动
binary #设置二进制传输类型
cd /tmp #远程服务器文件目录
prompt off #交互提示,off取消下载文件询问
get test.txt #下载test.txt到当前目录
mget test* #批量下载开头为test的文件
close
bye
EOF

sftp方式sftp无法直接像ftp似的使用命令登录,他的格式是:
sftp -P 端口 test@192.168.10.128回车在输入密码
可以使用lftp解决这个问题,lftp既可以直接连接ftp也可以连接sftp
new_ftp="lftp -u $username,$pwd ftp://$host:$port"
【LINUX随笔六 FTP端口限制和ftpsftp脚本连接】?new_ftp="lftp -u $username,$pwd sftp://$host:$port"
new_ftp="lftp -u $username,$pwd sftp://$host:$port"
$new_ftp < < EOF
cd /tmp
set xfer:clobber on #支持断点续传
get test.txt #下载test.txt到当前目录
mget test* #批量下载开头为test的文件
bye
EOF


    推荐阅读