在 Linux 上设置 SFTP(SSH File Transfer Protocol),本质上是通过 OpenSSH 来提供安全文件传输服务。下面按最常见、最实用的方式一步步说明。
大多数 Linux 发行版默认已安装 OpenSSH:
ssh -V
如果没有,可安装:
sudo apt update
sudo apt install openssh-server
sudo yum install -y openssh-server
# 或
sudo dnf install -y openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
检查状态:
sudo systemctl status sshd
✅ 默认情况下,SSH 用户即可使用 SFTP
测试:
sftp username@server_ip
只要用户能 SSH 登录,就能 SFTP。
常用于:只允许 SFTP,禁止 SSH 登录
sudo useradd -m -s /sbin/nologin sftpuser
sudo passwd sftpuser
sudo mkdir -p /data/sftp
sudo chown root:root /data/sftp
sudo chmod 755 /data/sftp
sudo mkdir /data/sftp/upload
sudo chown sftpuser:sftpuser /data/sftp/upload
编辑:
sudo vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
⚠️ ChrootDirectory 必须归 root 所有,且不能被用户写
sudo systemctl restart sshd
sftp sftpuser@server_ip
登录后:
pwd
ls
cd upload
put test.txt
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo ufw allow 22
# 查看日志
sudo journalctl -u sshd -f
# 或
sudo tail -f /var/log/secure
/data/sftp (root:root 755)
/data/sftp/upload (sftpuser:sftpuser)
✅ 禁用密码,使用密钥登录
✅ 限制 IP 访问
✅ 多用户 SFTP 组管理
✅ 配合 Fail2ban 防暴力破解
如果你愿意,可以告诉我:
我可以给你一份完全贴合你环境的配置方案。