CentOS SFTP文件共享设置
一 环境准备与基础检查
telnet your_ip 22)。firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload。二 快速搭建步骤
sudo yum install -y openssh-serversudo systemctl start sshd && sudo systemctl enable sshdsudo groupadd sftpuserssudo useradd -g sftpusers -s /sbin/nologin sftpusersudo passwd sftpusersudo mkdir -p /sftp/sftpusersudo chown root:root /sftp/sftpuser && sudo chmod 755 /sftp/sftpusersudo mkdir /sftp/sftpuser/upload && sudo chown sftpuser:sftpusers /sftp/sftpuser/upload && sudo chmod 755 /sftp/sftpuser/upload/etc/ssh/sshd_config,在文件末尾加入:Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
%u 自动替换为用户名,实现按用户隔离;ChrootDirectory 指定的目录及其上级必须为 root 所有且不可写。sudo sshd -tsudo systemctl restart sshdsftp sftpuser@your_server_ip三 常见共享场景配置
sudo mkdir -p /sftp/shared && sudo chown root:sftpusers /sftp/shared && sudo chmod 755 /sftp/sharedsudo mkdir /sftp/shared/upload && sudo chown sftpuser:sftpusers /sftp/shared/upload && sudo chmod 755 /sftp/shared/uploadsudo mount --bind /data/reports /sftp/sftpuser/reports/etc/fstab 持久化(按需):/data/reports /sftp/sftpuser/reports none bind 0 0四 权限与故障排查要点
ChrootDirectory 指定路径的每一级目录都必须是 root 拥有且不可写(通常 755);用户的可写目录放在其下,并 chown 给相应用户/组。sudo setenforce 0(测试后请恢复为 Enforcing 并采用正确的 SELinux 策略/布尔值)。sudo sshd -t 检查语法,再重启 sshd;查看日志:journalctl -u sshd -f 或 /var/log/secure。sftp sftpuser@ip 或 FileZilla/WinSCP 测试上传下载。五 安全加固建议
Match 段保持或显式设置 ForceCommand internal-sftp、AllowTcpForwarding no、X11Forwarding no。.ssh/authorized_keys 部署公钥),并禁用密码登录(在需要更严格时设置 PasswordAuthentication no)。Match Group sftpusers 限制范围,禁止该组用户获得 shell。