温馨提示×

centos sftp如何开启

小樊
33
2026-09-27 03:43:53
栏目: 智能运维

在 CentOS 上开启 / 配置 SFTP,通常通过 OpenSSH 自带功能实现(不需要额外装 FTP 服务)。下面按常见场景说明。


一、确认 OpenSSH 已安装并运行

rpm -qa | grep openssh
systemctl status sshd

如果没装:

yum install -y openssh-server

启动并设置开机自启:

systemctl start sshd
systemctl enable sshd

✅ SFTP 默认随 SSH 一起可用


二、最常用:使用系统用户 SFTP(限目录)

1️⃣ 创建用户

useradd sftpuser
passwd sftpuser

2️⃣ 创建 SFTP 根目录

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

3️⃣ 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

注释或确认:

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

在文件末尾添加:

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

4️⃣ 重启 SSH

systemctl restart sshd

5️⃣ 测试

sftp sftpuser@服务器IP

三、多个 SFTP 用户(推荐方式)

groupadd sftpusers

useradd -g sftpusers -s /sbin/nologin user1
useradd -g sftpusers -s /sbin/nologin user2

sshd_config:

Subsystem sftp internal-sftp

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

目录结构:

/data/sftp/user1
/data/sftp/user2

四、防火墙 & SELinux

防火墙

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

SELinux(如开启)

setsebool -P ssh_chroot_rw_homedirs on

五、常见问题

❌ 登录后立刻断开

  • Chroot 目录必须是 root 拥有
  • 权限不能超过 755

❌ 能登录但不能写

  • 写目录必须是用户拥有

六、如果你想要“FTP 风格”的 SFTP

  • 推荐:WinSCP / FileZilla(SFTP 模式)
  • 不推荐 vsftpd(FTP 明文)

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否只允许 SFTP(禁 SSH)
  • 是否需要公密钥登录

我可以给你精确配置示例。

0 踩