第一、FTP协议
FTP是TCP/IP协议组中的协议之一,TP协议由两个部分组成:1、FTP服务器,用来存储文件;2、FTP客户端,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
默认情况下FTP协议使用TCP端口中的20和21这两个端口。21端口用于传输控制信息,而是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用被动模式则具体使用哪个端口要服务器端和客户端协商决定。FTP传输模式分为两种:
①主动模式
FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PROT命令包含了客户端用什么端口接收数据。在传输数据的时候,服务器端通过自己的TCP
20端口连接至客户端的指定端口发送数据。
②被动模式
在建立控制通道与主动模式相似,但建立连接后是Pasv命令。FTP服务器收到Pasv命令后便随机打开一个高端端口并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,通过三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。
第二、SFTP协议
SFTP是SSH File Transfer
Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至Blogger伺服器的安全方式。其实在SSH软件包含中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程来完成相应的连接和答复 *** 作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
第三、二者的主要区别
链接方式:FTP使用TCP端口21上的控制连接建立连接。而SFTP是在客户端和服务器之间通过SSH协议建立的安全连接来传输文件。
安全性:SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全。
效率:SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低很多。在Linux中ftp服务器的全名叫 vsftpd,我们需要利用相关命令来开启安装ftp服务器,然后再在vsftpdconf中进行相关配置,下面我来介绍在Ubuntu中vsftpd安装与配置增加用户的方法。
(1)、首先用命令检查是否安装了vsftpd
vsftpd -version
如果未安装用一下命令安装
sudo apt-get install vsftpd
安装完成后,再次输入vsftpd -version命令查看是否安装成功
(2)、新建一个文件夹用于FTP的工作目录
mkdir /home/ftp
(3)、新建FTP用户并设置密码以及工作目录
ftpname为你为该ftp创建的用户名
sudo useradd -d /home/ftp -s /bin/bash ftpname
为新建的用户设置密码
passwd ftpname
注释:用cat etc/passwd可以查看当前系统用户
(4)、修改vsftpd配置文件 caojing@idcscn
用命令打开vsftpdconf
vi vsftpdconf
设置属性值
anonymous_enable=NO #禁止匿名访问
local_enable=YES
write_enable =YES
保存返回
(5)、启动vsftpd服务
service vsftpd start
(6)、在资源管理器,或者浏览器中ftp服务器
输入账号,密码登录即可
Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa |grep vsftpd 来查看是否安装相应的包,如果没有安装那么可以执行 yum -y install vsftpd 来安装,安装之后首先创建ftp用户,比如ftp_test,命令如下:
useradd -s /sbin/nologin -d /home/ftp_test ftp_test目录尽量不要选择根目录下,这里是/home/ftp_test,并且ftp_test这个目录不要手动创建,否则权限会有问题,执行命令的时候会自动创建,
可以看到权限现在是对于ftp_test用户是可读可写可执行的,其他用户和组下面的都没有任何权限,现在为ftp_test用户创建密码:
passwd ftp_test
执行之后输入2次密码确认就设置好了密码
然后编辑vsftpd配置文件,位置是:vim /etc/vsftpd/vsftpdconf
找到anonymous_enable这个配置项,默认是YES,修改成NO,表示不允许匿名用户登录
现在直接保存配置文件,执行 systemctl start vsftpdservice 启动vsftp服务,然后可以通过命令: systemctl status vsftpdservice 查看ftp服务的运行状态,现在就可以用ftp客户端进行连接了,这里用FileZilla测试,连接正常
现在基本的ftp服务就部署完了,客户端可以正常上传,下载,修改文件;但是这样有个问题就是所有的目录都暴露给客户端了,虽然客户端不能随意修改删除其余的文件,但是因为目录可见,所以总会有一些风险,所以接下来还需要配置让ftp用户只在自己的家目录下面活动,而无法查看其它任何目录,同样是打开配置文件/etc/vsftpd/vsftpdconf,找到chroot_local_user=YES这个配置,默认是注释的,这里去掉注释,表示只让用户在自己的目录里面活动,如果只是保存这一个配置的话,用ftp连接客户端会返回500 OOPS: vsftpd: refusing to run with writable root inside chroot()的错误,即禁止运行在可写的家目录中,因为刚才ftp_test这个目录有w权限,而现在我们使用的vsftpd版本是302 属于比较新的版本,为了安全性做了一些限制,如果你此时想通过 chmod a-w /home/ftp_test 来去掉目录的写权限,那么连接成功是没问题的,但是无法上传文件了,所以网上很多说修改权限的方法是不可取的,正确的做法是应该在下面添加一行配置allow_writeable_chroot=YES表示允许对家目录的写权限,具体配置如下:
配置完这两项以后保存退出,然后执行 systemctl restart vsftpdservice 重启vsftpd服务,现在重新使用ftp连接就成功了,并且任何 *** 作也是没问题的
现在可以看到上面的路径是一个/,对于ftp用户来说也就是根目录了,只能在这个目录下 *** 作,而无法跳出这个目录
以上就是vsftpd服务的基本搭建过程,实际使用时可以分配多个用户
Linux中的ftp服务器一般是安装vsftp。以centos为例,具体 *** 作如下:1、运行yum install vsftpd命令
命令具体的细节如下:
[root@banyuenet]# yum install vsftpd
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
–> Running transaction check
—> Package vsftpdi386 0:205-12el5 set to be updated
filelistsxmlgz 100% |=========================| 648 kB 02:46
>
在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件的具体 *** 作步骤如下:
1、在电脑上下载并安装好小型FTP服务器(QuickEasyFTPServer)软件,打开进行设置用户名,用于远程登录。
2、设置密码,再输一次确认密码。
3、设置想共享的文件夹。
4、设置各项权限,包括下载上传权限、下载上传速度限制等。
5、全部设置完毕后,点击“完成”。
6、完成之后,可以在软件里进行各项服务器配置,并且点左上角绿色按钮可以启动服务器,启动后,绿色按钮变暗,红色按钮变亮。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)