温馨提示×

centos如何搭建sftp服务

小樊
35
2026-09-24 06:18:13
栏目: 智能运维

在 CentOS(7/8/Stream 等) 上搭建 SFTP 服务,通常使用系统自带的 OpenSSH,不需要额外安装 FTP 服务。下面从最简可用到多用户隔离逐步说明。


一、确认 OpenSSH 已安装并运行(默认已带)

rpm -qa | grep openssh
systemctl status sshd

如未安装:

yum install -y openssh-server
systemctl enable --now sshd

✅ SFTP 默认就支持(基于 SSH)


二、创建 SFTP 专用用户(推荐)

1. 创建用户(禁止 SSH 登录)

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

三、配置 SFTP 目录(Chroot 隔离,重要)

1. 创建目录结构

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown sftpuser:sftpuser /data/sftp/sftpuser
chmod 755 /data/sftp

⚠️ 注意:

  • Chroot 目录必须属主为 root
  • 用户可写目录放在里面(如 sftpuser)

四、配置 SSH(核心)

编辑配置文件:

vi /etc/ssh/sshd_config

1. 注释或确认以下行

#Subsystem sftp /usr/libexec/openssh/sftp-server

改为:

Subsystem sftp internal-sftp

2. 添加 SFTP 用户限制

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

保存后:

systemctl restart sshd

五、测试 SFTP 登录

Linux / Mac

sftp sftpuser@服务器IP

Windows

  • FileZilla
  • WinSCP
    协议选 SFTP

六、多个用户(推荐做法)

useradd -m -s /sbin/nologin user2
mkdir -p /data/sftp/user2
chown root:root /data/sftp
chown user2:user2 /data/sftp/user2

sshd_config 中:

Match Group sftp
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
groupadd sftp
usermod -G sftp sftpuser
usermod -G sftp user2

七、常见问题

❌ 登录失败:broken pipe

  • Chroot 目录权限不对(必须是 root)
  • SELinux 拦截(见下)

SELinux 处理

setsebool -P ssh_chroot_rw_homedirs on

八、安全建议

  • 禁用密码登录,使用密钥
  • 修改 SSH 端口
  • 使用防火墙限制 IP

如果你需要: ✅ 只允许上传不能删除
✅ Docker 中搭建 SFTP
✅ 使用密钥登录

告诉我你的使用场景,我可以给你更定制化的配置。

0 踩