温馨提示×

如何 centos 配置 sftp

小樊
43
2026-09-02 22:35:22
栏目: 智能运维

下面给你一份**在 CentOS 上配置 SFTP(基于 OpenSSH)**的常用做法,适用于 CentOS 7 / 8 / Stream,安全、简单、生产可用。


一、前提说明

  • SFTP 使用 SSH 协议(22 端口)
  • 不使用 FTP 服务(vsftpd)
  • 常见需求:
    • 限制用户只能 SFTP
    • 不能 SSH 登录
    • 限定在指定目录

二、安装 OpenSSH(一般已安装)

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

三、创建 SFTP 用户和目录

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

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

2. 创建目录结构(重要)

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

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

✅ 说明:

  • SFTP 根目录必须属主为 root
  • 用户只能在子目录写文件

四、配置 SSH(关键)

编辑配置文件:

vim /etc/ssh/sshd_config

1. 注释或确认

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

改为:

Subsystem sftp internal-sftp

2. 添加 SFTP 限制配置(文件末尾)

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

如果有多个用户:

Match Group sftp
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp

五、重启 SSH

systemctl restart sshd

六、测试 SFTP

Linux / Mac

sftp sftpuser@服务器IP

Windows

  • FileZilla
  • WinSCP
  • Xshell

登录后:

  • 根目录 = /
  • 可写目录 = /upload

七、常见问题

1. 登录失败(权限错误)

错误示例:

fatal: bad ownership or modes for chroot directory

✅ 解决:

  • Chroot 目录必须是 root:root
  • 权限 ≤ 755

2. 想允许多个用户

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

3. 修改端口

Port 2222

防火墙:

firewall-cmd --add-port=2222/tcp --permanent
firewall-cmd --reload

八、安全建议

  • 禁用 root 登录
PermitRootLogin no
  • 使用密钥登录(推荐)
  • 定期更新系统

如果你愿意,我可以:

  • ✅ 给你一份完整可直接用的配置文件
  • ✅ 教你用密钥登录 SFTP
  • ✅ 配置 Docker / 多用户 / 只读目录

告诉我你的使用场景即可。

0