Linux下搭建SFTP示例

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

执行效果如图:

注:推荐从“/”目录下创建新的文件夹,方便后面赋予权限。

第五步:在第四步创建的目录下,再创建一个与用户名同名的文件夹

mkdir /tom

执行效果如图:

第六步:修改sshd_config的配置文件

把原来的sshd_config配置文件里的subsystem行注释掉:

vim /etc/ssh/sshd_config

执行效果如图:

在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命令

第七步:设定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创建成功!

 

声明:本文主要参考自以下链接,同时感谢运维同事【晓光】提供的搭建SFTP的shell脚本。

^_^ 如有不当之处,欢迎指正

^_^ 参考链接:
               http://blog.sina.com.cn/s/blog_4fd50c3901018a0l.html

^_^ 本文已经被收录进《程序员成长笔记(四)》,笔者JustryDeng

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值