温馨提示×

CentOS SFTP配置需要哪些步骤

小樊
40
2025-12-21 12:19:49
栏目: 智能运维

CentOS SFTP配置步骤

一 安装与启动 OpenSSH 服务

  • 安装 OpenSSH 服务器(如未安装):
    • CentOS 7/8:sudo yum install -y openssh-server
    • 安装完成后启动并设置开机自启:sudo systemctl start sshd && sudo systemctl enable sshd
    • 检查状态:sudo systemctl status sshd
  • 防火墙放行 SSH(默认端口 22):sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
  • 说明:SFTP 基于 SSH,无需额外安装 FTP 服务。

二 创建 SFTP 用户与目录结构

  • 创建专用用户组:sudo groupadd sftpusers
  • 创建 SFTP 用户(禁止 shell 登录,仅用于 SFTP):sudo useradd -g sftpusers -s /sbin/nologin -M sftpuser
  • 设置密码:sudo passwd sftpuser
  • 建立目录结构(示例根目录 /srv/sftp,可自定义):
    • 根目录(用于 chroot,需 root 属主):sudo mkdir -p /srv/sftp && sudo chown root:sftpusers /srv/sftp && sudo chmod 755 /srv/sftp
    • 用户可写目录:sudo mkdir -p /srv/sftp/sftpuser/uploads && sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/uploads && sudo chmod 755 /srv/sftp/sftpuser/uploads
  • 说明:chroot 根目录必须由 root 拥有,且不可被 SFTP 用户写入;可写目录放在其下。

三 配置 SSH 启用 internal-sftp 并限制登录

  • 编辑配置文件:sudo vi /etc/ssh/sshd_config
  • 推荐启用内置 SFTP 子系统并禁用不安全功能(文件末尾添加或修改):
    Subsystem sftp internal-sftp
    
    Match Group sftpusers
        ChrootDirectory /srv/sftp
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
        PermitTTY no
    
  • 说明:
    • 使用 internal-sftp 更安全、易管理。
    • ChrootDirectory 指定 chroot 根目录(如 /srv/sftp),其上层路径的所有目录也应由 root 拥有且不可被 SFTP 用户写入。
    • 如需对单用户限制,可将 Match Group sftpusers 改为 Match User 用户名

四 应用配置并测试连接

  • 语法检查:sudo sshd -t(配置文件语法错误会在此提示)
  • 重启服务:sudo systemctl restart sshd
  • 本机测试:sftp sftpuser@127.0.0.1
  • 远程测试:sftp sftpuser@服务器IP
  • 常见问题排查:
    • 出现 Broken pipe 或登录即断开,多为 chroot 目录权限不当(根目录需 root 属主,路径上各级目录不可被 SFTP 用户写入)。
    • 启动失败或配置不生效,先执行 sshd -t 检查,再查看日志 /var/log/secure

五 安全加固与扩展

  • 认证方式:优先启用 SSH 密钥认证,禁用密码或设置为仅密钥(在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no 并分发公钥)。
  • 访问控制:仅开放必要来源 IP;使用 AllowUsers/AllowGroups 精细化控制;定期更新系统与 SSH。
  • SELinux:若启用,确保相关布尔值与上下文允许 SFTP(如遇到权限拒绝可先排查 SELinux 策略)。
  • 日志与监控:审计 /var/log/secure,对异常登录与大量传输进行告警。

0