centos sftp文件共享设置
导读:CentOS SFTP文件共享设置 一 环境准备与基础检查 确认已安装并运行 OpenSSH 服务器,默认端口 22/TCP 可用;必要时放行防火墙。 建议准备一个用于共享的目录结构,例如 /sftp,并按需创建子目录用于读写隔离。 检查...
CentOS SFTP文件共享设置
一 环境准备与基础检查
- 确认已安装并运行 OpenSSH 服务器,默认端口 22/TCP 可用;必要时放行防火墙。
- 建议准备一个用于共享的目录结构,例如 /sftp,并按需创建子目录用于读写隔离。
- 检查 OpenSSH 版本(建议不低于 4.8p1),并确认 22 端口连通性(如
telnet your_ip 22)。 - 防火墙放行示例(firewalld):
firewall-cmd --permanent --add-service=ssh & & firewall-cmd --reload。
二 快速搭建步骤
- 安装与启动
- 安装:
sudo yum install -y openssh-server - 启动与开机自启:
sudo systemctl start sshd & & sudo systemctl enable sshd
- 安装:
- 创建用户与组
- 创建组:
sudo groupadd sftpusers - 创建用户(禁止 shell 登录):
sudo useradd -g sftpusers -s /sbin/nologin sftpuser - 设置密码:
sudo passwd sftpuser
- 创建组:
- 准备目录与权限(按用户隔离)
- 根目录(用于 chroot):
sudo mkdir -p /sftp/sftpuser - 根目录必须 root:root 且 755:
sudo chown root:root /sftp/sftpuser & & sudo chmod 755 /sftp/sftpuser - 可写子目录:
sudo mkdir /sftp/sftpuser/upload & & sudo chown sftpuser:sftpusers /sftp/sftpuser/upload & & sudo chmod 755 /sftp/sftpuser/upload
- 根目录(用于 chroot):
- 配置 SSH(启用 internal-sftp 并限制用户)
- 编辑
/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 -t - 重启服务:
sudo systemctl restart sshd
- 检查语法:
- 客户端连接测试
- 命令行:
sftp sftpuser@your_server_ip - 图形客户端(FileZilla/WinSCP):协议选 SFTP,主机填服务器 IP,端口 22。
- 命令行:
三 常见共享场景配置
- 多用户共享同一目录(只读共享,集中维护)
- 创建共享目录:
sudo mkdir -p /sftp/shared & & sudo chown root:sftpusers /sftp/shared & & sudo chmod 755 /sftp/shared - 为每个用户创建可写子目录:
sudo mkdir /sftp/shared/upload & & sudo chown sftpuser:sftpusers /sftp/shared/upload & & sudo chmod 755 /sftp/shared/upload - 用户 chroot 到各自目录(如 /sftp/sftpuser),通过上层共享目录进行只读访问与各自上传。
- 创建共享目录:
- 将系统其他目录“挂载”到用户 chroot 内(避免使用软链)
- 示例:
sudo mount --bind /data/reports /sftp/sftpuser/reports - 写入
/etc/fstab持久化(按需):/data/reports /sftp/sftpuser/reports none bind 0 0 - 说明:chroot 环境下 软链接通常不可用,推荐使用 mount --bind 将目标目录映射到 chroot 内。
- 示例:
四 权限与故障排查要点
- 权限规则
ChrootDirectory指定路径的每一级目录都必须是 root 拥有且不可写(通常 755);用户的可写目录放在其下,并 chown 给相应用户/组。- 常见报错如 “Network error: Software caused connection abort” 多与 chroot 目录权限不符有关,需确保 root:root 且 755。
- SELinux
- 若启用 SELinux,必要时调整策略或临时测试:
sudo setenforce 0(测试后请恢复为Enforcing并采用正确的 SELinux 策略/布尔值)。
- 若启用 SELinux,必要时调整策略或临时测试:
- 日志与语法
- 修改配置后先执行
sudo sshd -t检查语法,再重启sshd;查看日志:journalctl -u sshd -f或/var/log/secure。
- 修改配置后先执行
- 连接与端口
- 确认 22/TCP 未被占用且防火墙放行;客户端可用
sftp sftpuser@ip或 FileZilla/WinSCP 测试上传下载。
- 确认 22/TCP 未被占用且防火墙放行;客户端可用
五 安全加固建议
- 禁用不必要功能:在
Match段保持或显式设置ForceCommand internal-sftp、AllowTcpForwarding no、X11Forwarding no。 - 使用 SSH 密钥认证 替代口令(在用户家目录
.ssh/authorized_keys部署公钥),并禁用密码登录(在需要更严格时设置PasswordAuthentication no)。 - 仅允许 SFTP 访问:通过
Match Group sftpusers限制范围,禁止该组用户获得 shell。 - 定期更新 OpenSSH 与系统补丁,最小化对外开放端口,仅允许可信来源 IP(结合防火墙/安全组)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos sftp文件共享设置
本文地址: https://pptw.com/jishu/781058.html
