在 CentOS 上安装和配置 SFTP 服务,其实 不需要额外安装软件,因为 SFTP 是 OpenSSH 的一部分,系统默认就支持。你只需要确保 SSH 服务正常运行并正确配置。
下面按 CentOS 7 / 8 / Stream 通用步骤说明。
rpm -qa | grep openssh
一般会有:
openssh-server
openssh-clients
openssh
yum install -y openssh-server
# 或 CentOS 8 / Stream
dnf install -y openssh-server
systemctl start sshd
systemctl enable sshd
systemctl status sshd
编辑 SSH 配置文件:
vim /etc/ssh/sshd_config
Subsystem sftp internal-sftp
⚠️ 如果有下面这行,注释掉或删除:
# Subsystem sftp /usr/libexec/openssh/sftp-server
useradd -m sftpuser
passwd sftpuser
usermod -s /sbin/nologin sftpuser
mkdir -p /data/sftp
chown root:root /data/sftp
chmod 755 /data/sftp
mkdir /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload
chmod 755 /data/sftp/upload
✅ 规则说明(必须)
在 /etc/ssh/sshd_config 末尾添加:
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
如果你有多个用户:
Match Group sftpusers
ChrootDirectory /data/sftp
ForceCommand internal-sftp
并创建用户组:
groupadd sftpusers
usermod -aG sftpusers sftpuser
systemctl restart sshd
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
sftp sftpuser@服务器IP
协议选择 SFTP(不是 FTP)
检查:
/var/log/secure
常见原因:
setenforce 0
永久关闭:
vim /etc/selinux/config
SELINUX=disabled
✅ CentOS 安装 SFTP 的本质
internal-sftp如果你需要:
可以直接告诉我你的使用场景,我可以给你定制配置。