zoukankan      html  css  js  c++  java
  • Linux之搭建sftp

     

    0、查看openssh的版本

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

    1、创建sftp组

    groupadd sftp   
     

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

    #修改用户密码和修改Linux用户密码是一样的。
    useradd -g sftp -s /bin/false mysftp  //用户名
    passwd mysftp 密码
     

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

    mkdir -p /var/sftp/mysftp  
    usermod -d /var/sftp/mysftp mysftp  
     

    4、配置sshd_config

    #文本编辑器打开 /etc/ssh/sshd_config
    vim /etc/ssh/sshd_config
    #找到如下这行,用#符号注释掉,大致在文件末尾处。
    # Subsystem      sftp    /usr/libexec/openssh/sftp-server  
    
    #在文件最后面添加如下几行内容,然后保存。
    
    Subsystem sftp internal-sftp
    Match Group sftp
    ChrootDirectory /var/sftp
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
     

    5、设定Chroot目录权限

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

    6、建立SFTP用户登入后可写入的目录

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

    7、修改/etc/selinux/config

    #文本编辑器打开/etc/selinux/config
    vim /etc/selinux/config 
    #将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。
    
    #在输入命令
    setenforce 0
     

    8、重启sshd服务

    #输入命令重启服务。
    service sshd restart 
     

    9、验证sftp环境

    #用mysftp用户名登录,yes确定,回车输入密码。
    sftp sftpuser@127.0.0.1     
    #显示 sftp> 则sftp搭建成功。
    <sftp -oPort=22 sftpuser@127.0.0.1>
     

    10、使用FileZilla FTP Client连接SFTP服务器

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




    相关知识点:

      

      /bin/false是最严格的禁止login选项,一切服务都不能用,
      /sbin/nologin只是不允许系统login,可以使用其他ftp等服务

    如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。

    知道了Linux用户管理最重要的两个文件就是/etc/passwd和/etc/shadow这两个文件。其中/etc/passwd是用来存储登陆用户信息的,它的基本格式如下:

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin


    由上面的格式可以看出,每一行代表一个用户的信息,一共包括7个字段的信息,每个字段的信息用冒号隔开。这7个字段分别代表:

    1. 账号名称:即登陆时的用户名
    2. 密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了
    3. UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员
    4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的
    5. 用户信息说明栏: 用来解释这个账号是干什么的
    6. 家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里
    7. Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这里设置的,如果要想更改登陆后使用的shell,可以在这里修改。另外一个很重要的东西是有一个shell可以用来替代让账号无法登陆的命令,那就是/sbin/nologin。

  • 相关阅读:
    Linux 基本权限管理
    javaweb期末项目-stage1-part2-UML设计
    javaweb期末项目-项目结构
    javaweb期末项目-stage1-part1-需求分析(Requirements analysis)
    Data type
    Backup &recovery备份和还原
    CDI services--Scope(生命周期)&&EL.(Sp El)
    CDI services--Event(事件)
    CentOS 8.2上安装部署MongoDB 4.4
    CentOS8.2 安装部署squid代理服务器
  • 原文地址:https://www.cnblogs.com/xingxia/p/linux_sftp.html
Copyright © 2011-2022 走看看