在 Ubuntu 上配置 SFTP(SSH File Transfer Protocol) 通常基于 OpenSSH,不需要额外安装 FTP 服务器。下面是从 最常用、最安全 的方式一步步说明。
大多数 Ubuntu 已默认安装,若未安装:
sudo apt update
sudo apt install openssh-server
检查状态:
sudo systemctl status ssh
如未启动:
sudo systemctl enable ssh
sudo systemctl start ssh
sudo adduser sftpuser
(可设置密码)
sudo mkdir -p /data/sftp
sudo chown root:root /data/sftp
sudo chmod 755 /data/sftp
⚠️ SFTP 根目录必须属于 root,且其他用户不能写入
sudo mkdir /data/sftp/upload
sudo chown sftpuser:sftpuser /data/sftp/upload
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
# SFTP 配置
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
保存后测试配置:
sudo sshd -t
重启 SSH:
sudo systemctl restart ssh
sftp sftpuser@localhost
sftp sftpuser@服务器IP
原因通常是:
✅ 正确示例:
ls -ld /data/sftp
# drwxr-xr-x root root
sudo usermod -s /usr/sbin/nologin sftpuser
✅ 禁用 root 登录
✅ 使用密钥认证
✅ 修改默认 SSH 端口
✅ 使用防火墙(ufw)
如果你需要:
可以直接告诉我你的使用场景,我可以给你定制方案。