温馨提示×

centos sftp用户管理

小樊
39
2025-12-29 07:06:27
栏目: 智能运维

CentOS SFTP用户管理实操指南

一 基础准备与安装

  • 安装 OpenSSH 服务(如未安装):执行命令:sudo yum install -y openssh-server
  • 启动并设置开机自启:sudo systemctl start sshd && sudo systemctl enable sshd
  • 确认服务与端口:检查状态 sudo systemctl status sshd;默认端口 22
  • 防火墙放行(firewalld):sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
  • 建议准备专用用户组(如 sftpusers)用于统一管理 SFTP 账户。

二 创建用户与目录规范

  • 创建 SFTP 组:sudo groupadd sftpusers
  • 创建用户(示例:sftpuser1):
    • 交互式创建家目录:sudo useradd -m -G sftpusers sftpuser1 && sudo passwd sftpuser1
    • 或禁止 Shell 登录(更安全):sudo useradd -s /sbin/nologin -M sftpuser1 && sudo passwd sftpuser1
  • 目录与权限规范(chroot 要求):
    • 将用户根目录(chroot 目录)属主设为 root:root,权限 755/750
      • 示例:sudo chown root:root /home/sftpuser1 && sudo chmod 755 /home/sftpuser1
    • 在根目录下为上传创建可写子目录(如 upload),并归属用户:
      • 示例:sudo mkdir -p /home/sftpuser1/upload && sudo chown sftpuser1:sftpusers /home/sftpuser1/upload && sudo chmod 755 /home/sftpuser1/upload
  • 说明:chroot 根目录及其上级目录必须由 root 拥有,且不可对“其他”开放写权限,否则 SFTP 会拒绝登录。

三 配置 SSHD 限制为仅 SFTP 并启用日志

  • 编辑配置文件:sudo vi /etc/ssh/sshd_config
  • 启用 internal-sftp 并限制用户组(推荐按组管理):
    • 全局:Subsystem sftp internal-sftp
    • 组策略:
      Match Group sftpusers
          ChrootDirectory %h
          ForceCommand internal-sftp
          AllowTcpForwarding no
          X11Forwarding no
          PermitTunnel no
      
  • 按用户精确限制(可选):将 Match Group sftpusers 替换为 Match User sftpuser1
  • 启用 SFTP 日志(便于审计):
    • Match 段加入:ForceCommand internal-sftp -l INFO -f local5
    • /etc/rsyslog.conf/etc/rsyslog.d/50-default.conf 增加:auth,authpriv.,local5. /var/log/sftp.log
    • 重启服务:sudo systemctl restart sshd && sudo systemctl restart rsyslog
  • 注意:修改后使用 sshd -t 检查语法,再重启,避免锁死。

四 常用运维操作

  • 新增用户:重复“创建用户与目录规范”,保持 chroot 根目录为 root:root,可写目录归属相应用户。
  • 禁用/删除用户:
    • 锁定账户:sudo usermod -L sftpuser1;解锁:sudo usermod -U sftpuser1
    • 删除用户及家目录:sudo userdel -r sftpuser1
  • 变更用户组:追加附加组时使用 -a 防止脱离原组:sudo usermod -aG sftpusers sftpuser1
  • 公钥认证(免密):
    • 客户端生成密钥:ssh-keygen -t rsa -b 2048;将公钥(如 id_rsa.pub)追加到服务器对应用户的 ~/.ssh/authorized_keys
    • 目录与权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
  • 连接测试:sftp sftpuser1@your_server_ip;失败请查看 /var/log/secure/var/log/sftp.log

五 故障排查与加固要点

  • 常见报错与修复:
    • Broken pipe / Connection reset by peer”多与 chroot 目录权限有关:确保 chroot 根目录及其上级目录属主为 root,权限 755/750,且路径上目录不可对“其他”可写。
    • Permission denied”:检查用户家目录、可写子目录属主与权限;确认 SELinux 未阻止访问。
  • SELinux 处理(如启用):
    • 启用家目录支持:sudo setsebool -P sftp_home_dir on
    • 修正上下文(示例):sudo chcon -Rv ‘system_u:object_r:sshd_home_t:s0’ /home/sftpuser1
  • 安全加固清单:
    • 仅允许 SFTP:保持 ForceCommand internal-sftp,并关闭 AllowTcpForwarding / X11Forwarding / PermitTunnel
    • 禁止 Shell 登录:将 SFTP 用户 Shell 设为 /sbin/nologin/bin/false
    • 最小权限:chroot 根目录 root:root 755/750;可写目录单独授权给用户。
    • 日志与监控:启用 internal-sftp -l INFO -f local5rsyslog 输出至 /var/log/sftp.log,定期审计。
    • 防火墙:仅放通 22 端口(或指定 IP/网段)。

0