文件传输协议FTP
一、概述
文件传输协议:File Transfer Protocol
架构:C/S
服务端口:21/tcp 20/tcp
双通道协议:命令连接和数据连接
数据传输格式:二进制(默认)和文本
两种模式:从服务器角度
主动模式(PORT STYLE):服务器主动发起数据连接
命令连接(控制):client:随机高位port ----> ftpserver:21/tcp
数据连接:ftpserver:20/tcp ----> client:随机高位port
被动模式(PASSIVE STYLE):客户端主动发起数据连接
命令连接(控制):client:随机高位port ----> ftpserver:21/tcp
数据连接:client:随机高位port ----> ftpserver:随机高位port/tcp
【随机port通过命令连接通信协商】
【1024以上端口为高位端口,1024以下端口或已分配或是预留备用】
【两种模式中,每次传输文件,随机数据port都会变化】
【linux 客户端默认使用被动模式;windows 客户端默认使用主动模式】
服务器被动模式数据端口: 227 Entering Passive Mode (10,0,0,121,213,211) 服务器数据端口:213*256+211 FTP状态码: 1xx:信息 2xx:成功类状态 3xx:补充类 4xx:客户端错误 5xx:服务端错误用户认证方式: 匿名用户:ftp,anonymous,对应Linux用户ftp 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow 虚拟用户:特定服务的专用用户,独立的用户/密码文件 用户和其共享目录 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp 系统用户共享文件位置:用户家目录 虚拟用户共享文件位置:为其映射的系统用户的家目录
二、VSFTP服务实现
2.1、vsftpd简单说明
vsftpd服务由 vsftpd 包提供(centos7),不再由xinetd管理(centos6) 用户认证配置文件:/etc/pam.d/vsftpd 启动服务相关文件: /usr/lib/systemd/system/vsftpd.service (centos7) /etc/rc.d/init.d/vsftpd (centos6) 配置文件: /etc/vsftpd/vsftpd.conf 帮助:man 5 vsftpd.conf 格式:option=value 注意:= 前后不要有空格2.2、vsftpd常用配置
2.2.1、命令连接端口
根据此选项修改命令连接服务端口 listen_port=21 示例:更改命令连接端口为21211 [root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf 2 listen_port=2121 3 [root@vsftp-121 ~]# systemctl restart vsftpd 4 #/验证-默认21端口,访问失败/ 5 [root@client-108 ~]# ftp 10.0.0.121 6 ftp: connect: Connection refused 7 ftp> bye 8 #/验证-指定ftp命令连接端口2121,匿名访问成功/ 9 [root@client ~]# ftp 10.0.0.121 2121 10 Connected to 10.0.0.121 (10.0.0.121). 11 220 (vsFTPd 3.0.2) 12 Name (10.0.0.121:root): ftp 13 331 Please specify the password. 14 Password: 15 230 Login successful. 16 Remote system type is UNIX. 17 Using binary mode to transfer files. 18 ftp> ls 19 227 Entering Passive Mode (10,0,0,121,164,86). 20 150 Here comes the directory listing. 21 drwxr-xr-x 2 0 0 6 Oct 30 2018 pub
2.2.2、主动模式端口
connect_from_port_20=YES 主动模式端口为20 ftp_data_port=20 (默认) 指定主动模式的端口 示例:更改服务端数据连接端口为2020[root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf connect_from_port_20=YES #默认 ftp_data_port=2020 #新加 [root@vsftp-121 ~]# systemctl restart vsftpd #/client访问vsftpd,passive切换为主动模式/ [root@client-108 data]# ftp 10.0.0.121 Connected to 10.0.0.121 (10.0.0.121). 220 (vsFTPd 3.0.2) Name (10.0.0.121:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> passive #切换主被动模式passive Passive mode off. ftp> get f1 local: f1 remote: f1 #/验证服务端数据连接端口为:2020/ [root@vsftp-121 ~]# ss -nt State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.121:22 10.0.0.1:56408 ESTAB 0 3192840 ::ffff:10.0.0.121:2020 ::ffff:10.0.0.108:38956 ESTAB 0 0 ::ffff:10.0.0.121:21 ::ffff:10.0.0.108:38564
2.2.3、被动模式端口范围
pasv_min_port=6000 #0为随机分配 pasv_max_port=6010 #分配端口范围太少,多用户登录会报错 示例:调整被动模式端口范围[root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf pasv_min_port=6000 pasv_max_port=6010 [root@vsftp-121 ~]# systemctl restart vsftpd [root@client data]# ftp 10.0.0.121 Connected to 10.0.0.121 (10.0.0.121). 220 (vsFTPd 3.0.2) Name (10.0.0.121:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> get f1 local: f1 remote: f1 ... #/验证服务端数据连接端口是否在定义范围/ [root@vsftp ftp]# ss -nt State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.121:22 10.0.0.1:50644 ESTAB 0 0 ::ffff:10.0.0.121:21 ::ffff:10.0.0.108:38566 ESTAB 0 3583800 ::ffff:10.0.0.121:6006 ::ffff:10.0.0.108:44371
标签:10.0,ftp,文件共享,端口,网络,0.121,vsftpd,vsftp,port From: https://www.cnblogs.com/cnblogsfc/p/14188077.html