zoukankan      html  css  js  c++  java
  • Sftp搭建与配置参考

    Sftp搭建与配置参考

    1. 介绍

    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搭建

    2.1查看openssl的版本

    ssh -V

    ###使用ssh –V命令来查看openssh的版本,版本必须大于4.8p1,低于这个版本需要升级。

    2.2创建sftp组

    groupadd sftp

    2.3创建一个sftp用户,用户名为mysftp,密码为mysftp

    useradd –g sftp –s /bin/false mysftp //该用户不能通过sshd登陆到系统

    passwd mysftp

    2.3sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp

    mkdir -p /data/sftp/mysftp

    usermod –d /data/sftp/mysftp mysftp

    2.4配置sshd_config

    文本编辑器打开 /etc/ssh/sshd_config

    vi /etc/ssh/sshd_config

    找到如下这行,用#符号注释掉。

    # Subsystem      sftp    /usr/libexec/openssh/sftp-server

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

    Subsystem       sftp    internal-sftp

    ###配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的

    Match Group sftp                      

    #限定只有sftp组的才能访问

    ChrootDirectory /data/sftp/%u

    ###设定属于用户组sftp的用户访问的根文件夹

    ForceCommand    internal-sftp

    ###强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。

    AllowTcpForwarding no  

    ###是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器。

    X11Forwarding no        

    ###是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。

    如果启用了 UseLogin ,那么X11转发将被自动禁止。

    2.5设定Chroot目录权限

    chown root:sftp /data/sftp/mysftp

    chmod 755 /data/sftp/mysftp

    2.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.7重启sshd服务

    service sshd restart

    3.附录

    3.1sftp参考资料

    http://blog.csdn.net/xinxin19881112/article/details/46831311

    http://www.2cto.com/os/201401/272738.html

    http://www.1949idc.com/shownews399.html

    3.2 UNIX文件权限详解参考资料

    http://blog.csdn.net/astonqa/article/details/8292935###UNIX文件权限详解(尤其是SUID和SGID)参照

    3.3setfacl参考资料

    http://cn.linux.vbird.org/linux_basic/0410accountmanager_3.php ###鸟哥的讲解非常详细

    http://man.linuxde.net/setfacl

    http://blog.csdn.net/qwq_qaq/article/details/54882203

  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/flyback/p/6492059.html
Copyright © 2011-2022 走看看