zoukankan      html  css  js  c++  java
  • 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 创建SFTP 主目录

    mkdir -p /data/sftp

    2.2 创建SFTP 用户组

    groupadd sftp

    2.3 创建FTP用户,并指定home到SFTP主目录下

    以下创建了3个SFTP用户

    useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp1 ftp1
    useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp2 ftp2
    useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp3 ftp3

    2.4 设置FTP用户密码

    echo password1 | passwd --stdin ftp1
    echo password2 | passwd --stdin ftp2
    echo password3 | passwd --stdin ftp3

    2.5 修改 sshd_config 配置文件

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

    vi /etc/ssh/sshd_config

    #找到并注释
    #Subsystem      sftp    /usr/libexec/openssh/sftp-server
    
    #添加
    Subsystem       sftp    internal-ftp
    Match Group     sftp
    ChrootDirectory /data/sftp/%u
    ForceCommand    internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
    

      

    解释:
    Subsystem      sftp    internal-sftp  
    这行指定使用sftp服务使用系统自带的internal-sftp
     
    Match Group sftp  
    这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
     
    当然,也可以匹配用户
    Match User mysftp
    这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
     
    ChrootDirectory /data/sftp/%u  
    用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
     
    ForceCommand    internal-sftp  
    指定sftp命令
     
    AllowTcpForwarding no  
    X11Forwarding no  
    这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

    2.6 修改目录权限

    chown root:sftp /data/sftp/*
    chmod 755 /data/sftp/*

    解释:
    目录的权限设定有两个要点:
    1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
    2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限

    2.7 创建ftp用户上传下载目录

    照上面设置后,在重启sshd服务后,FTP 用户已经可以登录,但使用 chroot 指定根目录后,根应该是无法写入的.

    mkdir /data/sftp/ftp1/upload
    mkdir /data/sftp/ftp2/upload
    mkdir /data/sftp/ftp3/upload

    chown ftp1:sftp /data/sftp/ftp1/upload
    chown ftp2:sftp /data/sftp/ftp2/upload
    chown ftp3:sftp /data/sftp/ftp3/upload

    chmod 755 /data/sftp/ftp1/upload
    chmod 755 /data/sftp/ftp2/upload
    chmod 755 /data/sftp/ftp3/upload

    2.8 重启SSHD 服务

    service sshd restart

    2.9 登录验证

    [root@test1 ~]# sftp ftp2@localhost
    Connecting to localhost...
    ftp2@localhost's password: 
    sftp> dir
    upload  
    sftp> cd upload
    sftp>   lcd /etc
    sftp> put passwd
    Uploading passwd to /upload/passwd
    passwd                                                             100% 1825     1.8KB/s   00:00    
    sftp> dir
    passwd                      
    sftp> 
    

      

    完成!
     
    如果还能不能登录,请检查
    1.防火墙是否关闭
    2.SELINUX 是否关闭
    #关闭命令
    service iptables stop
    chkconfig iptables off
    
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;
    setenforce 0 
    

    参考:

  • 相关阅读:
    Java 之 Junit 单元测试
    数据结构和算法概述
    数组模拟队列
    单链表
    链表(Linked List)
    其它/编程 error201599
    SQL Server 生成 数据字典 / 数据库文档
    其它/编程 error2016420
    其它/编程 error2016118
    MySQL 数据 导入到 SQL Service
  • 原文地址:https://www.cnblogs.com/plluoye/p/8862081.html
Copyright © 2011-2022 走看看