zoukankan      html  css  js  c++  java
  • vsftp服务器部署

    环境:CentOS 6.6

    目标:个人虚机部署vsftp服务器,供测试使用。

    说明:步骤已改写为脚本,直接添加用户与对应的密码列表,调用函数名即可

    #####################################################################################
    ##函数功能:安装sftp服务器,并设置用户
    ##使用方法:直接调用函数名称
    ##    vsftp_install_set
    ##代码测试:CentOS 6.6 X64下测试通过
    #注意事项:
    #    用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级
    #    要添加的sftp用户列表和密码顺序要一一对应
    #####################################################################################
    
    v_sftp_group="sftp"
    v_sftp_dir="/data/sftp"
    v_user_list=(
        sms
        tom
        )
    v_pwd_list=(
        '!#@'    #注意:密码为!#@
        asfwe_12
        )
    sftp_install_set(){
        #yum -y install openssh
        groupadd ${v_sftp_group}
        mkdir -p ${v_sftp_dir}
        sed -i 's/^Subsystem/#&/g' /etc/ssh/sshd_config 
        cat>>/etc/ssh/sshd_config<<EOF
    Subsystem       sftp    internal-sftp    
    Match Group ${v_sftp_group}        
    ChrootDirectory ${v_sftp_dir}/%u    
    ForceCommand    internal-sftp
    AllowTcpForwarding no    
    X11Forwarding no 
    EOF
        for (( i = 0; i < ${#v_user_list[*]}; i++ )); do
            for (( j = i; j < ${#v_pwd_list[*]}; j++ )); do
                if [[ j -eq i ]]; then
                    useradd -g ${v_sftp_group} -d ${v_sftp_dir}/${v_user_list[i]} -s /bin/false ${v_user_list[i]}
                    echo ${v_pwd_list[j]} | passwd --stdin ${v_user_list[i]}    
    
                    #ChrootDirectory必须是root用户所有,否则报错:Couldn't read packet: Connection reset by peer
                    #该目录赋权为755或750
                    chown root:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]} 
                    chmod 755 ${v_sftp_dir}/${v_user_list[i]}
                    #设置用户自己可读写的目录,否则在ChrootDirectory下没有读写权限
                    mkdir -p ${v_sftp_dir}/${v_user_list[i]}/upload  
                    chown ${v_user_list[i]}:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]}/upload  
                    chmod 755 ${v_sftp_dir}/${v_user_list[i]}/upload
                    mkdir -p ${v_sftp_dir}/${v_user_list[i]}/download  
                    chown ${v_user_list[i]}:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]}/download  
                    chmod 755 ${v_sftp_dir}/${v_user_list[i]}/download
                fi
            done
        done
        #停用selinux,否则会报错:Couldn't get handle: Permission denied
        sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
        setenforce 0
        #操作完毕,重启ssh服务
        service sshd restart
    }
    View Code

    以下为手动操作记录:

    打开命令终端窗口,按以下步骤操作。

    # ssh -V  #查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。

    1、创建sftp组

    # groupadd sftp

    2、创建一个sftp用户sms,密码自定义

    # useradd -g sftp -s /bin/false sms #用户名
    # passwd sms #密码

    -g sftp:指定用户所属组为sftp

    -s /bin/false:禁止用户登录shell

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

    # mkdir -p /data/sftp/sms 
    # usermod -d /data/sftp/sms sms
    或在执行步骤2时,执行命令:
    # useradd -g sftp -s /bin/false -d /data/sftp/sms sms #-d 参数指定用户默认的家目录路径

    4、配置sshd_config
    备份/etc/ssh/sshd_config配置文件,并编辑

    # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    # vim /etc/ssh/sshd_config

    找到如下这行,用#符号注释掉,大致在文件末尾处。

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

    在文件末尾添加如下内容:

    Subsystem sftp internal-sftp   #使用internal-sftp,而非sftp-server
    Match Group sftp               #限制使用的用户组
    ChrootDirectory /data/sftp/%u  #限制用户只能操作自己用户目录下的内容
    ForceCommand internal-sftp     #使用internal-sftp命令
    AllowTcpForwarding no 
    X11Forwarding no

    注:最好在末尾添加,否则配置代码顺序不对可能会导致sftp配置失败。

    5、设定Chroot目录权限

    # chown root:sftp /data/sftp/sms 
    # chmod 755 /data/sftp/sms

    注:

    设置用户家目录为root:sftp,否则会报错:Write failed: Broken pipe Couldn't read packet: Connection reset by peer;

    设置用户目录操作权限为750或755

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

    # mkdir /data/sftp/sms/upload 
    # chown sms:sftp /data/sftp/sms/upload 
    # chmod 755 /data/sftp/sms/upload

    注:这步很重要,否则用户直接在家目录下进行操作,是不能进行创建文件的,vsftp服务无法使用。

    7、修改/etc/selinux/config(可选)
    文本编辑器打开/etc/selinux/config

    vi /etc/selinux/config 

    将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ;执行如下命令使设置生效:

    # setenforce 0

    8、重启sshd服务

    # service sshd restart

    9、验证sftp环境
    用sms用户名登录,yes确定,回车输入密码。

    sftp sms@127.0.0.1 

    显示 sftp> 则sftp搭建成功。

    10、Windows客户端:

    使用FileZilla FTP Client连接SFTP服务器
    输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

  • 相关阅读:
    .Net下HTTP访问穿越多层代理的方法以及代理服务器的验证 转载
    SB淘宝api的奇葩问题! 一则服务器无法访问淘宝api
    C# 系统应用之清除Cookies、IE临时文件、历史记录 转载
    Replication--进程无法在“xxxx”上执行“sp_replcmds”
    [leetcode] Search Insert Position
    [leetcode] Search for a Range
    [leetcode] Merge Sorted Array
    [leetcode] Remove Element
    [leetcode] Find Minimum in Rotated Sorted Array
    [leetcode] Container With Most Water
  • 原文地址:https://www.cnblogs.com/chinas/p/7461080.html
Copyright © 2011-2022 走看看