美文网首页
ubuntu 开启 sftp 服务

ubuntu 开启 sftp 服务

作者: 钢铁小肥侠 | 来源:发表于2018-06-14 10:41 被阅读0次

    1. 下载安装 openssh-server

    sudo apt-get install openssh-server
    

    2. 创建 sftp 用户组 sftp-group

    sudo addgroup sftp-group
    

    3. 创建 sftp 用户 sftp-user

    sudo adduser sftp-user
    // 将 sftp-user 添加到 sftp-group 用户组,并从其他用户组移除
    sudo usermod -G sftp-group -s /bin/false sftp-user
    // 将 root 添加到 sftp 用户组
    usermod -a -G sftp-group root
    

    4. 创建共享目录配置权限

    // 创建 sftp 共享目录
    sudo mkdir /data/shared
    // 先将目录分配给 root
    chown root /data/shared
    chmod 755 /data/shared
    // 再将目录转让给 sftp-group 用户组
    chgrp -R sftp-group /data/shared
    // 将目录分配给 sftp-user 用户
    chown -R sftp-user:sftp-group /data/shared
    chmod 755 /data/shared
    

    5. 配置 ssh , /etc/ssh/sshd_config

    # AllowGroups sftp-group 只允许 sftp-group 用户组访问系统
    # 允许 sftp-group 用户组访问
    Match Group sftp-group 
    Match User sftp-user
        # 为 sftp-group 用户组设置访问根目录,为方便可以直接设置为 shared 目录
        ChrootDirectory /data/shared
         # 密码认证
        PasswordAuthentication yes
        # 禁止 TCP Forwarding
        AllowTcpForwarding no 
        # 禁止 X11 Forwarding
        X11Forwarding no
        # 强制该组用户仅仅使用SFTP
        ForceCommand internal-sftp 
    

    6. 重启服务,重启系统以生效

    /etc/init.d/ssh restart
    sudo reboot now
    

    7. 基础 sftp 命令

    // 连接
    sftp -p sftp-user@192.168.1.1
    // 上传文件
    put 本地文件的路径 将文件版保存到远程主机的路径
    // 下载文件
    get 远程主机下文件的路径 将文件保存到本地电脑的路径 
    

    如果你链接服务器的时候出现下面的提示:

    Write failed: Broken pipe
    Couldn't read packet: Connection reset by peer
    这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

    目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。

    目录开始一直往上到系统根目录为止都不可以具有群组写入权限

    上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。

    相关文章

      网友评论

          本文标题:ubuntu 开启 sftp 服务

          本文链接:https://www.haomeiwen.com/subject/utpeeftx.html