CentOS SFTP配置指南
小樊
38
2026-01-08 00:29:40
CentOS SFTP配置指南
一 环境准备与安装
- 确认系统已安装 OpenSSH 服务,若未安装可执行:sudo yum install -y openssh-server。
- 启动并设置开机自启:sudo systemctl start sshd && sudo systemctl enable sshd。
- 防火墙放行 SSH 端口 22:sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload。
- 验证服务状态:sudo systemctl status sshd;SFTP 基于 SSH,默认使用 22 端口,无需额外守护进程。
二 基本配置与连接测试
- 编辑配置文件:sudo vi /etc/ssh/sshd_config。默认情况下已启用 SFTP 子系统,常见为:Subsystem sftp /usr/libexec/openssh/sftp-server(该行存在即可,无需修改)。
- 保存后重启服务:sudo systemctl restart sshd。
- 客户端连接测试:sftp your_username@your_server_ip,输入密码后应能进入 SFTP 会话并进行上传/下载。
三 推荐做法 仅SFTP访问与目录隔离
- 创建专用组与用户:
- 组:sudo groupadd sftpusers
- 用户:sudo useradd -m -G sftpusers your_username && sudo passwd your_username
- 配置仅 SFTP 与 Chroot 隔离(/etc/ssh/sshd_config 末尾追加):
- Match Group sftpusers
- ChrootDirectory %h
- ForceCommand internal-sftp
- AllowTcpForwarding no
- X11Forwarding no
- 设置目录权限(关键点):
- 将用户主目录属主设为 root:root,权限 755:sudo chown root:root /home/your_username && sudo chmod 755 /home/your_username
- 如需可写目录,在主目录下创建子目录并赋权给该用户,例如:
- sudo mkdir /home/your_username/uploads
- sudo chown your_username:your_username /home/your_username/uploads
- 重启服务:sudo systemctl restart sshd
- 说明:使用 internal-sftp 配合 ChrootDirectory %h 可将用户根目录限制在其主目录,实现仅 SFTP 访问与目录隔离。
四 常见问题与排查
- 配置语法检查:修改后先执行 sudo sshd -t,无输出即为语法正常;再重启 sshd。
- 权限错误导致登录或写入失败:
- Chroot 根目录(如 /home/your_username 或自定义的 /data/sftp)及其上级目录的属主必须为 root,权限不高于 755,否则 chroot 会失败。
- 可写目录应放在 chroot 根下并单独赋权给相应用户(如 upload 目录),不要给 chroot 根目录本身可写。
- 客户端报错 “Broken pipe”:多由 chroot 目录权限或属主不正确引起,按上条修正权限后重试。
- 日志排查:查看 /var/log/secure 获取 SSH/SFTP 认证与连接详细日志。
五 安全加固建议
- 禁用 root 登录:在 /etc/ssh/sshd_config 中设置 PermitRootLogin no,重启 sshd 生效。
- 使用 internal-sftp:在 Chroot 场景下优先使用 internal-sftp,减少外部二进制依赖与权限问题。
- 禁用不必要通道:对 SFTP 用户组可统一设置 AllowTcpForwarding no、X11Forwarding no,必要时 PermitTTY no。
- 精细化权限:仅授予上传目录必要权限,避免全局可写;定期审计用户与目录。
- 保持更新:定期更新 OpenSSH 及相关组件,修复已知漏洞。