在 Linux 上开启 SFTP 服务,通常不需要单独安装 SFTP,而是 通过 SSH 服务自带实现。下面按常见发行版给你一个完整、安全的开启步骤。
SFTP 是 SSH 的一部分,只要 SSH 正常运行,SFTP 一般就可用。
ssh -V
如果没有安装:
yum install -y openssh-server
apt update
apt install -y openssh-server
systemctl start sshd
设置开机自启:
systemctl enable sshd
检查状态:
systemctl status sshd
✅ 看到 active (running) 即表示 SFTP 已可用。
SFTP 由 sshd_config 控制。
vim /etc/ssh/sshd_config
确认存在以下内容(一般默认就有):
Subsystem sftp /usr/libexec/openssh/sftp-server
或(新系统常见):
Subsystem sftp internal-sftp
✅ 只要没有被注释掉,SFTP 就是开启的。
sftp localhost
或远程测试:
sftp user@服务器IP
useradd -m sftpuser
passwd sftpuser
编辑 /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,不能登录系统。
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
或(Ubuntu):
ufw allow 22
ChrootDirectory 权限不对Linux 的 SFTP 服务 = SSH 服务 + 默认开启的 sftp subsystem
如果你告诉我:
我可以给你一份 完全贴合你环境的配置方案。