sftp与vsftp服务的搭建与使用

sftp与vsftp服务的搭建与使用

  • 前言
  • 一、FTP是什么?
    • 1.FTP是干什么的?
    • 2.FTP的工作方式
    • 3.vsftp的引入
  • 二、VSFTP服务
    • 1.安装
    • 2.配置文件
    • 3.使用
    • 4.匿名用户与本地用户权限控制
  • 三、SFTP服务
    • 1.SFTP服务的配置


前言

在开始学习的时候第一次搭建的ftp服务就是vsftp,当时以为vsftp就是人们说的sftp,然而他们有很大的区别!


一、FTP是什么?

1.FTP是干什么的?

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP基于TCP协议,由于较高的传输效率,经常用于文件的传输。其包含两部分:客户端和服务器;服务器一般用来存储文件供客户端下载。
FTP默认情况下使用TCP的21和20端口,其中21用于传输控制信息,20用于传输数据。是否使用20作为数据传输端口与ftp的工作方式有关,如果采用主动模式,数据传输端口为20;被动模式下,端口需要客户端和服务器端协商决定。

2.FTP的工作方式

主动模式:Standard (也就是 PORT方式,主动方式),该模式下FTP的客户端发送PORT命令到FTP服务器。该模式下,ftp客户端首先与服务器建立TCP 21端口建立连接,用于发送控制命令,客户端在传输数据时在该通道上发送PORT命令。PORT包含了客户端用什么端口接收数据,FTP服务器通过自己的20端口连接至客户端指定的端口上,然后进行数据的传输。

被动模式:Passive(也就是PASV,被动方式),该模式下FTP的客户端发送
PASV命令到FTP服务器。与主动模式一样,先建立21端口上的连接,用于发送控制命令。客户端在传输数据时在该通道上发送Pasv命令。FTP服务器收到Pasv命令之后,随机打开一个高端端口(大于1024)并且通知客户端在这个端口上传输数据,然后客户端连接至服务器的该端口,然后进行数据的传输。

3.vsftp的引入

由于FTP的文件传输是明文方式,具有一定的危险性,所以就诞生了一种更加安全的传输方式vsftp。

二、VSFTP服务

1.安装

yum install -y vsftpd

yum -y install lftp # 本地 ftp 客户端

systemctl restart  vsftpd.service #起服务

2.配置文件

代码如下(示例):

/etc/vsftpd/vsftpd.conf	vsftpd 的核心配置文件
/etc/vsftpd/ftpusers	 用于指定哪些用户不能访问FTP 服务器。  黑名单
/etc/vsftpd/user_list	指定允许使用vsftpd 的用户列表文件。  白名单
/etc/vsftpd/chroot_list	指定允许使用vsftpd 的用户列表文件。  控制名单下的目录能不能离开ftp根目录

3.使用

ftp默认存放文件位置在/var/ftp/pub

修改FTP默认访问目录:
修改etc/vsftpd/vsftpd.conf文件即可
添加这几行:
local_root=/var/www/html #针对系统用户
anon_root=/var/www/html #针对匿名用户

4.匿名用户与本地用户权限控制

匿名用户

anonymous_enable=YES   #是否启用匿名用户
no_anon_password=YES   #匿名用户login时不询问口令
下面这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名。
anon_upload_enable=(yes/no)#控制匿名用户对文件(非目录)上传权限。
anon_world_readable_only=(yes/no); #控制匿名用户对文件的下载权限
anon_mkdir_write_enable=(yes/no); #控制匿名用户对文件夹的创建权限
anon_other_write_enable=(yes/no); #控制匿名用户对文件和文件夹的删除和重命名
注:匿名用户下载是使用的是nobody这个用户,所以相应的O这个位置要有R权限才能被下载。若想让匿名用户能上传和删除权限,必需设置
anon_root=(none) #匿名用户主目录
anon_umask=(077) #匿名用户上传文件时有掩码(若想让匿名用户上传的文件能直接被匿名下载,就这设置这里为073)
chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改

本地用户

write_enable=YES #可以上传(全局控制) 删除,重命名
local_umask=022 #本地用户上传文件的umask
userlist_enable=YES #限制了这里的用户不能访问
local_root #设置一个本地用户登录后进入到的目录
user_config_dir #设置用户的单独配置文件,用哪个帐户登陆就用哪个帐户命名
download_enable #限制用户的下载权限
chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=whoever #匿名上传文件所属用户名
chroot_list_enable=YES #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用户文件
user_config_dir= #后面跟存放配置文件的目录。用来实现不同用户不同权限。
#在vsftpd.conf文件中加入这一句,
#在相应的目录里面,为每个用户创建自己的配置文件,用来实现不同的权限

三、SFTP服务

SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务

1.SFTP服务的配置

修改/etc/ssh/sshd_config配置文件
#注释掉下面这行
#Subsystem sftp /usr/libexec/openssh/sftp-server

同时添加以下内容:

Subsystem sftp internal-sftp  #指定使用sftp服务使用系统自带的internal-sftp 
Match user  sftpuser        #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory  /data/sftp   #设定属于用户组sftp的用户访问的根文件夹如设置    /data/sftp   作为sftpuser        的sftp根目录
ForceCommand internal-sftp #指定sftp命令,强制执行内部sftp,并忽略任何    ~/.ssh/rc文件中的命令
X11Forwarding no   #这两行,如果不希望该用户能使用端口转发的话就加    上,否则删掉
AllowTcpForwarding no

对于sftp的目录应该这么设置

chown root:sftp 
chmod 755

你可能感兴趣的:(linux,linux,运维)