FTP基本原理
--------- Client Server--------------
①客户端向服务器发出连接请求,同时客户端系统动态地打开一个大于1024的端口等候服务器连接(比如1031端口)
②若FTP服务器在端口21侦听到该请求,则会在客户端1031端口和服务器的21端口之间建立一个FTP会话连接
③当需要传输数据时,FTP客户端动态地打开一个大于1024的端口(比如1032端口)连接到服务器的20端口,并在这两个端口之间进行数据的传输。当数据传输完毕后,这两个端口会自动关闭
④当FTP客户端断开与FTP服务器的连接时,客户端上动态分配的端口将自动释放
FTP工作模式
主动传输模式(Active FTP):默认
在主动传输模式下,FTP客户端随机开启一个大于1024的端口N(1025)向服务器的21号端口发起连接,然后开放N+1号端口(1026)进行监听,并向服务器发送PORT 1026命令。服务器接收到命令后,会用其本地的FTP数据端口(通常20)来连接客户端指定的端口1026,进行数据传输。
被动传输模式(Passive FTP):
在被动传输模式下,FTP客户端随机开启一个大于1024的端口N(1025)向服务器的21号端口发起连接,同时会开启N+1号端口(1026),然后向服务器发送PASV 命令。通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024端口P(1521)进行监听,然后用PORT P命令通知客户端,自己的数据端口是1521.客户端收到命令后会通过1026号端口连接服务器的端口1521,然后在两个端口之间进行数据传输。
FTP安装
FTP server hostname fanxh1 192.168.1.10
FTP clinet hostname fanxh2 192.168.1.20
yum -y install vsftpd 采用YUM安装ftp
service iptables stop 关闭iptables
sentenforce 查看Selinux 是否开启,如果值为1说明是开启的
sentenforce 0 关闭Selinux且不需要重启服务器
service vsftpd restart (/etc/init.d/vsftpd restart) 重新启动ftp服务
chkconfig vsftpd on ftp服务随系统开机而自动启动服务(2345级别开启)
chkconfig --list vsftpd 查看vsftpd在那些级别启动
用netstat -anptul | grep vsftpd 查看ftp服务端口是否开启
服务器的配置(192.168.1.10)
vim /etc/vsftpd/vsftpd.conf 修改ftp的主配置文件
12 anonymous_enable=YES 修改匿名用户是否可以登录(YES)代表允许匿名用户可以登录(NO)代表不允许匿名用户登录
15 local_enable=YES 修改本地用户是否可以登录(YES)代表允许本地用户登录(NO)代表不允许本地用户登录
96 #chroot_local_user=YES 修改是否禁锢本地用户在自己的家目录,默认是注释以#开头的,如果想开启把前面的#去掉
120 listen_port=21 修改连接ftp服务器的端口,默认连接ftp服务器的端口是21
122 max_clients=20 修改最多并发连接的数量(20)
123 max_per_ip=2 修改每个IP地址最多的并发连接数(2)
124 anon_max_rate=50000 修改匿名用户下载速度(50KB/S)
125 local_max_rate=100000 修改本地用户下载速度(100KB/S)
客户端测试
1.在(服务器端192.168.1.10)添加一个本地用户,并且密码为123456
[[email protected] ~]# useradd fanxiaohui 创建一个用户fanxiaohui
[[email protected] ~]# echo 123456 | passwd --stdin fanxiaohui 给用户fanxiaohui添加一个密码
[[email protected] ~]#cd /var/ftp/pub 默认匿名用户家目录
[[email protected] ~]#ls -l /etc/* > /var/ftp/pub/anon.txt 在匿名用户的家目录下创建一个文件为anon.txt
2.在(服务器端192.168.1.10)创建一个测试文件
[[email protected] ~]# ls -l /etc/* > ~fanxiaohui/fanxiaohui.txt 在本地用户的家 目录下创建一个文件为fanxiaohui.txt
3.在客户端测试(192.168.1.20)
匿名用户登录ftp登录方式和上传、下载
[[email protected] ~]# ftp 192.168.1.10
Name (192.168.1.10:root): ftp 匿名用户登录的用户名
Password: 匿名用户登录的密码(默认没有)
230 Login successful. 说明登录成功
ftp> ls 查看ftp目录下的内容
drwxr-xr-x 2 0 0 4096 Jan 06 18:16 pub
ftp> cd pub 切换到pub目录下,可以查看到服务器端/var/ftp/pub的内容
ftp> ls 查看pub目录下内容
-rw-r--r-- 1 0 0 27370 Jan 06 18:03 anon.txt
ftp> get anon.txt 下载ftp/pub/anon.txt的命令
ftp> !ls 查看是否下载成功,有就代表下载成功
anaconda-ks.cfg anon.txt install.log install.log.syslog
ftp> put install.log 上传/root/install.log
227 Entering Passive Mode (192,168,1,10,117,22).
550 Permission denied. 显示上传失败
本地用户的登录方式和上传下载
[[email protected] ~]# ftp 192.168.1.10
Name (192.168.1.10:root): fanxiaohui 本地用户登录的用户名
Password: 本地用户登录的密码123456
Logionsuccessful. 说明登录成功
ftp> ls 查看本地用户家目录的内容
-rw-r--r-- 1 0 0 56655 Aug 04 12:51 fanxiaohui.txt
ftp> get fanxiaohui.txt 下载ftp服务器的文件为fanxiaohui.txt
ftp> !ls 查看是否下载成功,有就代表下载成功
anaconda-ks.cfg anon.txt fanxiaohui.txt install.log install.log.syslog
ftp> put install.log 上传/root/install.log
ftp> ls 查看ftp的内容,如果有就代表上传成功
-rw-r--r-- 1 501 501 12526 Aug 04 12:59 install.log
-rw-r--r-- 1 0 0 56655 Aug 04 12:51 fanxiaohui.txt
FTP的总结
1.登录FTP后命令的总结
get 下载
put 上传
mget 下载多个,支持通配符
mput 上传多个,支持通配符
!cmd 执行外面命令
lcd 切换外面路径
2.默认FTP登录后的总结
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载