一.什么是ftp?
简介:ftp是(文件传输协议),是tcp/ip协议族中,应用层的一个协议。
功能:提供客户机和服务器之间下载和上传文件。
服务器<---------------->客户机
文件从服务器传到客户机------下载
客户机把文件传到服务器-----上传
程序:ftp对应的应用程序(软件包)vsftp
端口在tcp传输层,用来标记程序,表示什么程序对外提供服务
控制端口:21(验证用户名和密码的输入)
数据端口:20(传数据)
二.ftp服务实战应用
-
下载功能
服务端:192.168.1.158
客户端:192.168.1.168
目的:实现客户端和服务端的文件传输。服务端提供文件服务,让客户可以在服务器上下载文件,同时又可以把文件上传到服务器。
服务端操作:
1.安装ftp对应的软件包vsftpd
yum install vsftpd -y
2.创建要分发的文件资源(可以让客户端去下载,可以是文件,图片,视频等)
#:/var/ftp/ 是ftp服务的主目录,客户端在此目录下载文件资源,这是对匿名用户的,如果是用不登录就去用户家目录下下载。
touch /var/ftp/abc.txt
注意:pub是安装ftp自己创建的目录,如果服务器上的文件太多就放到此目录下
3.重启ftp服务器
systemctl start vsftpd
systemctl enable vsftpd #:开机自启
4.关闭防火墙和selinux
systemctl stop firewalld
getenforce #:查看selinux状态
setenforce 0 #:临时关闭selinux
vim /etc/selinux/config #:永久关闭
修改内容:SELINUX=diabled
客户端操作:
安装lftp工具(可以在ftp服务器进行下载和上传)
yum install lftp -y
已经安装过,没有就自行安装
客户端下载文件
1.在一个Centos机器用lftp去服务器下载:
[root@localhost ~]# lftp 192.168.1.158 #:lftp 服务器ip,去ftp的主目录下载文件。
lftp 192.168.1.158:~> ls #:进入一个交互模式,ls可以看到主目录下的内容
-rw-r--r-- 1 0 0 0 Aug 07 10:49 abc.txt
drwxr-xr-x 2 0 0 6 Jun 09 16:15 pub
lftp 192.168.1.158:/> get abc.txt #:get 文件名 下载文件
lftp 192.168.1.158:/> mirror pub #:mirror 目录名 下载目录
Total: 1 directory, 0 files, 0 symlinks
lftp 192.168.1.158:/> exit #:exit 退出
测试:(注意客户机ltp连接时在哪个目录就会把文件下载到哪个目录)
[root@localhost ~]# ls #:ls可以看到服务器的内容已经下载过来。
abc.txt anaconda-ks.cfg pub
2.用windows真机客户端去访问服务器:(主机浏览器默认只能下载不能上传)
去浏览器输入下载地址
把abc.txt下载到windows桌面
3.用wget工具去服务器下载
我们在服务器上放入一个文件(就是在/var/ftp下创建文件)
在客户端机器wget下载
说明:wget ftp://192.168.1.58是下载地址,然后后面的/表示在ftp服务器的根目录(这是一个假的根目录对于服务器来说就是/var/ftp这个目录,但是客户端认为/就是ftp服务器的根),33.txt是要下载的文夹。
扩展:******************************************
wget参数实例:
wget ftp://192.168.1.158/pub/2.txt -O /tmp/ #:-O参数指定下载目录
**************************************************************************************************************
-
上传功能:
配置文件:/etc/vsftpd/vsftpd.conf(用户设置ftp服务器的功能)
1.检查匿名访问是否开启:
目的:如果开启客户端就可以不用输入账号和密码直接匿名下载,否则就要输入服务器的里面的一个用户信息才可以进行下载
anonymous_enable=YES #:yes就可以进行下载
现在我们把YES改为NO看看
systemctl restart vsftpd
然后用windows客户端下载(可以看到要输入服务器账号和密码,就不能直接下载了)
这个账号和密码就是服务器里面的一个用户的账号和密码
现在服务器上创建一个用户
useradd zhansan
passwd zhansan
客户端可以用此账号登录去服务器下载文件。一旦开启认证,服务器就把用户家目录当做ftp服务的根目录(此时服务器的ftp目录就会变成/home/zhansn,会在此目录下,下载文件,是针对用户的,而/var/ftp所有客户端都看得见)
我们先在服务器上放下文件资源
然后进行测试:
2.服务器配置上传指令
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES #:启动可以上传文件的能力
anon_mkdir_write_enable=YES #:启动可以上传文件夹的能力
systemctl restart vsftpd 重启服务
在客户机上进行上传
3.服务器上创建上传目录
mkdir /var/ftp/shangchuan #:在/var/ftp下创建一个目录,接收客户端上传(直接放在/var/ftp 会很乱)
chmod 777 /var/ftp/shangchuan
4.客户端测试
在客户端创建一个要上传的文件。(kkk 目录111和目录下的文件222)
开始连接服务器进行上传:
[root@localhost ~]# lftp 192.168.1.158
lftp 192.168.1.158:~> cd shangchuan/ #:选择我们要上传的目录
lftp 192.168.1.158:/shangchuan> put kkk #:上传文件
lftp 192.168.1.158:/shangchuan> mirror -R 111 #:上传目录和目录下的文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
客户端测试:(可以看到已经上传成功)
拓展:因为浏览器,不能上传,所以windows想要上传就先把数据放到linux,再由linux上传。