【网络共享存储】sftp服务搭建使用

1. SFTP介绍

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

2. SFTP搭建

sftp服务器有两种搭建方式,下面介绍一下

  1. 直接在系统上新建一个用户即可,此种方式最简单,但最不安全,用户sftp登陆之后可以随意切换目录,切用户可以ssh登陆到系统,很不安全,生产环境中没这么干的,故不详细介绍了。
  2. 标准sftp的搭建

2.1. 标准sftp的搭建

我们使用的系统是CentOS 7.2,关闭Selinux和防火墙

2.1.1. 查看OpenSSH版本

~]# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

注意:OpenSSH版本必须大于4.8p1,低于这个版本需要升级

2.1.2. 创建sftp组

~]# groupadd sftp
~]# grep sftp /etc/group
sftp:x:10000:

2.1.3. 创建用户组为sftp

useradd命令参数:
-d: 指定用户家目录
-g: 指定用户组
-s: 指定用户默认shell

创建一个sftp用户,名称为mysftp并将组设置为sftp

~]# useradd -d /data/sftp/mysftp -g sftp -s /bin/false mysftp
~]# grep mysftp /etc/passwd
mysftp:x:10000:10000::/data/sftp/mysftp:/bin/false
~]# id mysftp
uid=10000(mysftp) gid=10000(sftp) groups=10000(sftp)
~]# ll /data/sftp/
total 0
drwx------ 2 mysftp sftp 59 Feb 25 15:36 mysftp
Changing password for user mysftp.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
~]# chown root:sftp /data/sftp/mysftp

2.1.4. 修改sshd_config

我们修改 /etc/ssh/sshd_config 文件,限制用户访问sftp的目录

  1. Subsystem sftp /usr/libexec/openssh/sftp-server 这行的注释

  2. 在文件最后面添加如下几行内容,然后保存

    Subsystem       sftp    internal-sftp
    # 配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系
    # 统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,
    # 这里配置为内部的
    Match Group sftp
    # 限定只有sftp组的才能访问
    ChrootDirectory /data/sftp/%u
    # 由ChrootDirectory指定的目录开始一直往上到系统根目录的目录属主都是root.
    # 由ChrootDirectory指定的目录开始一直往上到系统根目录都不可以具有群组写入权限.
    # 强制执行内部SFTP,并忽略任何~/.ssh/rc中的命令
    ForceCommand internal-sftp
    # 禁用端口转发
    AllowTcpForwarding no
    X11Forwarding no
    

2.1.5. 重启SSHd服务

~]# systemctl restart sshd

2.1.6. 创建可写目录

建立SFTP用户登入后可写入的目录,照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

~]# mkdir /data/sftp/mysftp/upload
~]# chown mysftp:sftp /data/sftp/mysftp/upload
~]# chmod 755 /data/sftp/mysftp/upload

2.2. 访问SFTP服务

~]# sftp mysftp@192.168.66.11
mysftp@192.168.66.11's password: 
Connected to 192.168.66.11.
sftp> ls
upload  
sftp> ls -l
drwxr-xr-x    2 10000    10000           6 Feb 25 09:48 upload
sftp> cd upload/
sftp> pwd
Remote working directory: /upload      
sftp> mkdir sftp
sftp> ls -l
drwxr-xr-x    2 10000    10000           6 Feb 25 09:51 sftp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值