温馨提示×

sftp在centos如何配置

小樊
46
2026-10-17 15:22:42
栏目: 智能运维

下面以 CentOS 7 / 8 / Stream 为例,说明如何配置 SFTP(基于 OpenSSH),包含基础可用配置和安全的用户隔离配置(推荐)。


一、基础 SFTP 配置(系统用户可直接用)

1. 安装 OpenSSH

CentOS 一般默认已安装:

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

2. 确认 SFTP 子模块已启用

编辑配置文件:

vi /etc/ssh/sshd_config

确认有以下内容(默认一般都有):

Subsystem sftp internal-sftp

3. 创建 SFTP 用户

useradd sftpuser
passwd sftpuser

4. 测试连接

sftp sftpuser@服务器IP

✅ 到此,最基础的 SFTP 已可用


二、推荐:限制 SFTP 用户只能访问指定目录(Chroot)

⚠️ 注意:Chroot 目录必须由 root 拥有,且其他用户不可写

1. 创建目录结构

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

mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload

2. 配置 sshd_config

vi /etc/ssh/sshd_config

在文件末尾添加:

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

3. 重启 SSH

systemctl restart sshd

4. 登录测试

sftp sftpuser@服务器IP
  • ✅ 只能在 /upload 上传下载
  • ❌ 无法访问系统其他目录

三、多用户 SFTP 配置(组方式)

1. 创建 SFTP 组

groupadd sftp

2. 创建用户

useradd -g sftp -s /sbin/nologin user1
passwd user1

3. 目录配置

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

mkdir /data/sftp/user1/upload
chown user1:sftp /data/sftp/user1/upload

4. sshd_config

Match Group sftp
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

重启:

systemctl restart sshd

四、常见问题排查

1. 登录报错

fatal: bad ownership or modes for chroot

✅ 解决:

  • Chroot 目录必须 root:root
  • 权限不能大于 755

2. 无法上传

  • 上传目录必须是用户可写
  • 用户 shell 应为 /sbin/nologin

3. 防火墙

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

五、安全建议

  • ✅ 禁用密码登录,使用密钥
  • ✅ 修改默认端口
  • ✅ 禁止 SFTP 用户 SSH 登录
  • ✅ 配合 fail2ban 防爆破

如果你需要:

  • 仅 SFTP 不允许 SSH
  • Docker 中配置 SFTP
  • 使用 vsftpd 而不是 sftp
  • 图形化工具(FileZilla)连接示例

可以直接告诉我你的使用场景。

0 踩