SFTP简介(百度百科):
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。
比起搭建FTP,搭建SFTP貌似简单很多~
环境说明:CentOS7
SFTP的搭建
准备工作:检查openssh版本
说明:本次使用系统自带的internal-sftp搭建sftp,因为需要用到chroot,所以openssh 版本不能低于4.8p1。
ssh -V
执行效果如图:
注:OpenSSH_4.8p1以后都支持chroot了。
第一步:创建用户分组sftp
groupadd sftp
执行效果如图:
第二步:添加用户tom至分组sftp
useradd -g sftp -s /sbin/nologin tom
执行效果如图:
注:-g后面接组;-s指定用户登入后所使用的shell,默认值为/bin/bash。
注:【/bin/bash】指:用户即能使用账号密码连接sftp,又能使用账号密码登录该Linux服务器;
【/sbin/nologin】指:用户只能使用账号密码连接sftp,不能使用账号密码登录该Linux服务器;对于FTP、
SFTP、SMTP等程序级服务,我们一般都设置为【/sbin/nologin】。
第三步:修改tom用户的密码
passwd tom
执行效果如图:
注:本人的密码设置的是【tom123】。
第四步:创建一个目录,来专门存放sftp相关文件
mkdir /sftp
执行效果如图:
注:推荐从“/”目录下创建新的文件夹,方便后面赋予权限。
第五步:在第四步创建的目录下,再创建一个与用户名同名的文件夹
cd /sftp
mkdir tom
执行效果如图:
第六步:修改sshd_config的配置文件
把原来的sshd_config配置文件里的subsystem行注释掉:
vim /etc/ssh/sshd_config
选择编辑
输入I(insert)进入添加
I
执行效果如图:
在sshd_config文件最后添加:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
执行效果如图:
相关参数说明:
Subsystem sftp internal-sftp:指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp:用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割。
注:当然也可以匹配用户,如:【Match User mysftp】,多个用户名
之间也是用逗号分割。
ChrootDirectory /sftp/%u:用chroot将用户的根目录指定到/sftp/%u,%u代表用户名,这
样用户就只能在/sftp/%u下活动。
ForceCommand internal-sftp:指定sftp命令
Esc 输入
:wq
保存编码
第七步:设定Chroot目录权限
chown root:sftp /sftp
chown root:sftp /sftp/tom
chmod 755 /sftp
chmod 755 /sftp/tom
执行效果如图:
注:目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者,都只能是root,群组可以
是第一步创建的组,这里是sftp
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止,目录所属的群组都不可以具有写的权限。
注:读(r,权限值为4)、写(w,权限值为2)、执行(x,权限值为1)。
第八步:在/sftp/tom目录下,创建一个文件夹files,并设置该文件夹的拥有者
为对应的用户,并设置该文件夹的拥有者有7的权限。这样该用户可
以在files目录下进行任何操作(上传、下载、删除、创建等操作)
创建文件夹:
mkdir files
执行效果如图:
设置权限:
chown tom /sftp/tom/files
chmod 755 /sftp/tom/files
执行效果如图:
说明:之所以这么做,是因为用户tom的根目录为/sftp/tom/,但是用户tom对文件夹/sftp/tom/没有7的权限,只有
5的权限(因为用户文件夹/sftp/tom/所属组为sftp,而tom有时组sftp中的一员,所以tom对文件夹/sftp/tom/有
5的权限)。所以用户tom不能再根目录下写入,因此我们还需要创建一个文件夹给用户tom,让用户tom有该
文件夹全部的权限。
第九步:重启sshd配置
systemctl restart sshd
执行效果如图:
第十步:连接SFTP,验证一下
sftp 用户名@ip地址
执行效果如图:
由此可见:SFTP创建成功!