在 Linux 中,SFTP 本身并不支持真正的“匿名登录”,因为 SFTP 是基于 SSH 的,而 SSH 要求身份验证(密码、密钥等)。不过,你可以通过以下几种**“近似匿名”**的方式实现类似效果:
useradd -m sftpuser
passwd sftpuser
编辑 /etc/ssh/sshd_config:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
重启 SSH:
systemctl restart sshd
✅ 效果:用户用 sftpuser 登录,但不知道这是“真实用户”,可视为匿名
passwd -d sftpuser
并在 sshd_config 中允许空密码:
PermitEmptyPasswords yes
⚠️ 极不安全,仅限内网测试
如果你只是想要“匿名文件传输”,可以用 vsftpd:
yum install vsftpd # 或 apt install vsftpd
配置:
anonymous_enable=YES
anon_root=/var/ftp
systemctl start vsftpd
访问:
ftp localhost
# 用户名: anonymous
# 密码: 任意
ssh-keygen
/home/sftpuser/.ssh/authorized_keys
✅ 适合自动化脚本
| 方式 | 是否真匿名 | 安全性 | 推荐度 |
|---|---|---|---|
| 匿名账号 | 否(逻辑匿名) | ✅ | ⭐⭐⭐⭐ |
| 空密码 | 否 | ❌ | ⭐ |
| FTP 匿名 | ✅ | ⚠️ | ⭐⭐⭐ |
| 密钥登录 | 否 | ✅✅ | ⭐⭐⭐⭐ |
如果你能说明使用场景(公网 / 内网 / 自动化 / 给客户下载),我可以给你最适合的方案。