zoukankan      html  css  js  c++  java
  • centos7 上部署sftp-实测可用

    1、使用root用户创建用户组,组名为sftpgroup;创建sftp用户,用户名为sftpuser,并设置密码

    groupadd sftpgroup // 创建sftp组
    useradd -g sftpgroup -M -s /sbin/nologin sftpuser //-M 表示创建用户时不生成对应home目录,-s /sbin/nologin 表示sftp用户不能登录系统
    passwd sftpuser // 修改sftp用户密码
    

    2、修改配置文件sshd_config

    vi /etc/ssh/sshd_config
    
    修改如下:
    
    将下面这行注释掉
    #Subsystem sftp /usr/libexec/openssh/sftp-server
    ## 在文件末尾添加如下几行
    Port 22022
    Subsystem sftp internal-sftp
    Match Group sftpgroup
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory /sftp/%u  
    ForceCommand internal-sftp
    -----------------------------------------------------------------------------------------------------------------------------
    示例解释:
    Match Group sftp                         # 这一行是指定以下的子行配置是匹配 sftp 用户组的。Match user userA,userB 则是匹配用户。
    ChrootDirectory /sftp/%u     # 设定属于用户组 sftp 的用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名。
    ForceCommand internal-sftp      # 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令。
    AllowTcpForwarding no              # 是否允许 TCP 转发,默认值为 "yes", 禁止 TCP 转发并不能增强安全性,除非禁止了用户对 shell 的访问,因为用户可以安装他们自己的转发器。
    X11Forwarding no                      # 是否允许进行 X11 转发。默认值是 "no",设为 "yes" 表示允许。如果允许 X11 转发并且 sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用 X11 转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止 X11 转发并不能禁止用户转发 X11 通信,因为用户可以安装他们自己的转发器。
    

    3、使用root创建新目录,并将其设置为sftpuser的home目录,并指定目录权限

    mkdir -p /sftp/sftpuser //-p 表示parents,即递归创建目录
    usermod -d /sftp/sftpuser sftpuser // -d 表示修改用户home(家)目录
    #  设置Chroot目录权限
    chown root:root /sftp/sftpuser
    chmod 755 /sftp/sftpuser
    
    // 设置sftp用户可以操作的目录
    mkdir /sftp/sftpuser/upload
    chown sftpuser:sftpgroup /sftp/sftpuser/upload
    chmod 755 /sftp/sftpuser/upload
    

    要实现 Chroot 功能, 目录权限的设置非常重要 。否则无法登录,给出的错误提示也让人摸不着头脑,无从查起。我在这上面浪费了很多时间。

    ChrootDirectory:定义了用户通过认证以后的 chroot 目录,此目录及其所有子目录的属主必须是 root,且这些目录只有 root 帐号可以进行写操作,其他任何组和帐号都不可写。chroot 以后,sshd 会将用户的工作目录转到 chroot 目录中用户自己的主目录。如果 ChrootDirectory 定义的目录下没有相应的 /home/username 目录,则会直接转到 chroot 的 / 目录下。
    目录权限设置上要遵循2点:

    ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,属主和属组必须是 root;
    ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是 755。

    4、重启sshd

    systemctl restart sshd.service
    

    5、验证:sftp -P22022 sftpuser@ip

    参考:
    https://www.cnblogs.com/reachos/p/11737382.html
    https://blog.csdn.net/zhichao_qzc/article/details/80301994

    所有的事都会过去,我们所有的人都是从小白开始,坚持下去。
  • 相关阅读:
    2017上半年技术文章集合【Android】—184篇文章分类汇总
    一个高仿闲鱼键自定义数字键盘特效
    Android智能下拉刷新加载框架—看这些就够了
    深入了解Android蓝牙Bluetooth——《进阶篇》
    with和爬虫基础
    数据类型
    变量及注释
    计算机基础知识
    Markdown使用
    3732: Network
  • 原文地址:https://www.cnblogs.com/li-dy/p/13541753.html
Copyright © 2011-2022 走看看