HCRM博客

CentOS SFTP独立账号配置指南

CentOS 配置 SFTP 账号:安全文件传输指南

在 Linux 服务器管理中,安全地传输文件至关重要,SFTP(SSH File Transfer Protocol)基于 SSH 协议,提供了加密的文件传输通道,相比传统的 FTP 更加安全可靠,本指南详细讲解在 CentOS 系统上配置专用 SFTP 账号的过程,并限制其仅用于文件传输,无法获得完整的 Shell 访问权限,从而提升服务器安全性。

核心目标:创建隔离的 SFTP 用户

CentOS SFTP独立账号配置指南-图1

我们将创建一个新用户,将其活动严格限制在指定的目录内,实现安全隔离。

详细配置步骤:

  1. 准备工作与用户创建

    • 使用管理员账号(如 root 或具有 sudo 权限的账号)登录服务器。
    • 创建 SFTP 用户组 (推荐): 为便于管理,建议先创建一个专门的用户组,执行命令:
      groupadd sftpusers
    • 创建新用户并设置主目录: 创建用户 sftpuser1(可自定义用户名),将其加入 sftpusers 组,并指定其主目录(/var/sftp/sftpuser1):
      useradd -g sftpusers -d /var/sftp/sftpuser1 -s /sbin/nologin sftpuser1
      • -g sftpusers:指定主组为 sftpusers
      • -d /var/sftp/sftpuser1:设置用户主目录(该目录会在下一步创建)。
      • -s /sbin/nologin:关键!禁止用户通过 SSH 获得交互式 Shell 登录能力,仅允许 SFTP。
    • 设置用户密码:
      passwd sftpuser1

      输入并确认一个强密码。

  2. 创建并配置隔离目录

    • 创建根目录: 所有 SFTP 用户的隔离目录会集中在一个父目录下(如 /var/sftp),创建它并设置严格权限:
      mkdir -p /var/sftp
      chown root:root /var/sftp
      chmod 755 /var/sftp
      • 此目录归 root 所有,其他用户只有读取和执行权限,无法写入。
    • 创建用户专属目录: 在根目录下为用户创建专属目录(即之前指定的主目录):
      mkdir -p /var/sftp/sftpuser1
    • 设置用户目录权限: 将专属目录的所有权交给 root,但授予用户写入权限(通过组):
      chown root:sftpusers /var/sftp/sftpuser1
      chmod 770 /var/sftp/sftpuser1
      • root 拥有所有权,sftpusers 组拥有读写执行权限(用户 sftpuser1 属于该组)。
      • 关键点: 用户登录后将被限制在此目录(/var/sftp/sftpuser1)内,且该目录归 root 所有,用户 sftpuser1 能读写此目录是因为属于 sftpusers 组并拥有 770 权限。
    • 创建用户实际使用的上传目录(可选但推荐): 用户登录后只能看到其专属目录,为了允许用户上传文件,需要在专属目录下创建一个子目录(如 upload)并将其所有权交给该用户:
      mkdir /var/sftp/sftpuser1/upload
      chown sftpuser1:sftpusers /var/sftp/sftpuser1/upload
      chmod 770 /var/sftp/sftpuser1/upload
      • 用户 sftpuser1 现在对 upload 目录拥有完全控制权(读写执行)。
  3. 修改 SSH 配置以启用 SFTP 监狱 (Chroot)

    CentOS SFTP独立账号配置指南-图2
    • 编辑 SSH 服务的主配置文件:
      vi /etc/ssh/sshd_config
    • 找到配置文件的末尾或 Subsystem sftp 相关部分。
    • 注释掉或替换默认的 SFTP 行: 找到类似 Subsystem sftp /usr/libexec/openssh/sftp-server 的行,在其行首添加 注释掉它。
    • 添加新的 SFTP 配置块: 在文件末尾添加以下配置(请根据实际情况调整路径和组名):
      # 配置内部SFTP子系统,并将 sftpusers 组成员限制在各自目录内
      Subsystem sftp internal-sftp
      Match Group sftpusers
          ChrootDirectory /var/sftp/%u
          ForceCommand internal-sftp
          X11Forwarding no
          AllowTcpForwarding no
          PermitTunnel no
      • Subsystem sftp internal-sftp:使用 OpenSSH 内置的 SFTP 实现(internal-sftp),它原生支持 ChrootDirectory 功能,效率更高。
      • Match Group sftpusers:此配置块仅应用于属于 sftpusers 组的用户。
      • ChrootDirectory /var/sftp/%u:核心配置!将匹配的用户限制(chroot)在其主目录 /var/sftp/<用户名> 下。%u 会自动替换为登录的用户名(如 sftpuser1)。
      • ForceCommand internal-sftp:强制匹配的用户只能运行 SFTP 命令,禁止执行任何其他命令或获得 Shell。
      • X11Forwarding no, AllowTcpForwarding no, PermitTunnel no:禁用不必要的功能,进一步加强安全。
    • 保存并退出编辑器 (在 vi 中按 Esc,输入 :wq,回车)。
  4. 应用配置并重启 SSH 服务

    • 在修改 sshd_config 后,必须重启 SSH 服务使更改生效:
      systemctl restart sshd
    • 强烈建议在断开当前连接前,先在新窗口中测试 SFTP 登录,确认无误后再退出管理会话,避免因配置错误导致无法远程连接。
  5. 测试 SFTP 连接

    • 使用 SFTP 客户端(如 FileZilla, WinSCP, 或命令行 sftp)进行连接测试。
    • 连接信息:
      • 主机:服务器 IP 地址或域名
      • 端口:SSH 端口(默认 22)
      • 用户名:sftpuser1
      • 密码:之前设置的密码
      • 协议:选择 SFTP - SSH File Transfer Protocol
    • 预期结果:
      • 成功连接后,客户端应显示用户被限制在 /var/sftp/sftpuser1 目录(客户端可能显示为 根目录)。
      • 用户应能看到并可以读写 upload 子目录(如果创建了)。
      • 尝试执行任何 Shell 命令(如 ls 在 FileZilla 的命令行)都应失败,提示权限不足或命令不可用。

值得注意的安全与权限要点:

  • ChrootDirectory 所有权:/var/sftp/sftpuser1 目录本身及其所有父目录(直到 /var/sftp必须root 用户拥有,且其他用户不能有写权限(通常设置为 755),这是 internal-sftp 实现 chroot 的安全要求。
  • 用户数据目录: 用户需要写入数据的目录(如 /var/sftp/sftpuser1/upload)必须由该用户拥有(或属于其组并有写权限),并设置在 ChrootDirectory 指定的目录内部。
  • /sbin/nologin 确保用户 shell 设置为 /sbin/nologin(或 /usr/sbin/nologin)是防止其获得 SSH Shell 登录的关键。
  • 权限最小化: 始终遵循最小权限原则,只授予用户完成工作所必需的权限。
  • 日志监控: 定期检查 /var/log/secure 日志文件,监控 SFTP 用户的登录和活动情况。
  • 防火墙: 确保服务器的防火墙(如 firewalld)开放了 SSH 端口(默认 22/TCP),外部客户端才能连接 SFTP。
  • 密钥认证(可选): 对于更高安全性,可考虑为 SFTP 用户配置 SSH 密钥认证代替密码,并在 sshd_config 中为匹配块添加 PasswordAuthentication no 来禁用密码登录。

遵循这些步骤,即可在 CentOS 服务器上成功建立安全的 SFTP 账号访问机制,有效保障文件传输过程的安全性,同时限制用户权限范围,定期审计用户权限和目录结构是维持长期安全的重要习惯。

CentOS SFTP独立账号配置指南-图3

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/36613.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~