在 CentOS 上开启 SFTP 通常不需要额外安装软件,因为 SFTP 由 OpenSSH 提供。下面按常见场景给你一个完整、实用的操作指南。
rpm -qa | grep openssh
sudo yum install -y openssh-server
(CentOS 7 / 8 通用)
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd
✅ 看到 active (running) 即表示 SSH / SFTP 已就绪。
SFTP 默认由 sshd 提供,无需额外配置。
sudo vi /etc/ssh/sshd_config
确认存在以下内容(一般默认就有):
Subsystem sftp /usr/libexec/openssh/sftp-server
或(较新系统):
Subsystem sftp internal-sftp
✅ 有其中一条即可。
sftp localhost
sftp 用户名@服务器IP
示例:
sftp root@192.168.1.100
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
如果你希望 用户只能 SFTP,不能登录系统,可按下面配置。
sudo useradd -m sftpuser
sudo passwd sftpuser
sudo vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
创建可写目录:
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo systemctl restart sshd
✅ 该用户只能 SFTP,不能 SSH 登录。
ChrootDirectory 权限不正确(必须是 root 拥有)yum install -y openssh-server
systemctl start sshd
systemctl enable sshd
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
✅ 到此,SFTP 已成功开启。
如果你告诉我:
我可以给你一份 完全定制版配置方案。