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 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,对异常登录与大量传输进行告警。