在 CentOS 上开启 SFTP 服务,实际上 SFTP 是依赖于 OpenSSH 的,不需要单独安装“SFTP 服务”,只要 SSH 服务正常即可。下面是完整步骤(以 CentOS 7 / 8 / Stream 为例):
rpm -qa | grep openssh
如果没有,安装:
yum install -y openssh-server
(CentOS 8 / Stream 可用 dnf)
systemctl start sshd
systemctl enable sshd
systemctl status sshd
看到 active (running) 就说明正常。
SFTP 由 /etc/ssh/sshd_config 中的这一行控制:
Subsystem sftp /usr/libexec/openssh/sftp-server
检查:
grep sftp /etc/ssh/sshd_config
如果该行被注释(前面有 #),取消注释并重启 sshd:
systemctl restart sshd
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
(如果是云服务器,还需在安全组放行 22 端口)
在客户端执行:
sftp user@服务器IP
或本地测试:
sftp localhost
如果你希望 某些用户只能 SFTP,不能 SSH 登录:
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
UseDNS no
如果你告诉我:
我可以给你更精确的配置示例。