在 CentOS 上开启 SFTP 功能,通常不需要额外安装软件,因为 SFTP 是 OpenSSH 的一部分。只要 SSH 服务正常,SFTP 就已经可用。下面按常见场景说明。
systemctl status sshd
systemctl start sshd
systemctl enable sshd
ss -lntp | grep sshd
只要 SSH 正常,SFTP 默认就可用 ✅
在客户端连接:
sftp username@服务器IP
或使用工具(WinSCP / FileZilla / Xftp)
协议选择 SFTP,端口 22
useradd -m sftpuser
passwd sftpuser
编辑:
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
✅ 用户只能 SFTP,不能 SSH 登录
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
ChrootDirectory 权限不正确(必须是 root 拥有)getenforce
如果是 Enforcing,可临时关闭测试:
setenforce 0
| 需求 | 操作 |
|---|---|
| 开启 SFTP | 启动 sshd 即可 |
| 限制只能 SFTP | 配置 ChrootDirectory + internal-sftp |
| 默认端口 | 22 |
| 依赖服务 | OpenSSH |
如果你需要 多用户隔离、非 22 端口、密钥登录 或 CentOS 7/8/Stream 特定配置,可以告诉我你的版本和需求,我可以给你定制方案。