在 Linux 上开启 SFTP 服务,通常是通过 OpenSSH 来实现的(SFTP 是 SSH 的一部分)。下面按常见场景给你一个完整说明。
ssh -V
或
dpkg -l | grep openssh # Debian/Ubuntu
rpm -qa | grep openssh # CentOS/RHEL
Ubuntu / Debian
sudo apt update
sudo apt install openssh-server
CentOS / Rocky / Alma
sudo yum install openssh-server
# 或
sudo dnf install openssh-server
✅ SFTP 不需要单独开启,只要 SSH 服务启动即可
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd
看到 active (running) 即表示 SFTP 已可用。
SFTP 默认由 sshd_config 提供:
sudo vim /etc/ssh/sshd_config
确认存在以下内容(一般默认就有):
Subsystem sftp /usr/lib/openssh/sftp-server
或(较新系统):
Subsystem sftp internal-sftp
修改后重启 SSH:
sudo systemctl restart sshd
默认是 22
firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
ufw
sudo ufw allow 22
sudo ufw reload
sftp localhost
sftp user@服务器IP
如果你希望 禁止 SSH 登录,只允许 SFTP:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
⚠️ 注意:
ChrootDirectory 目录必须 root 拥有且 755Linux 开启 SFTP = 安装并启动 OpenSSH Server
如果你愿意,可以告诉我:
我可以给你一份完全适合你环境的配置方案。