在 Linux 的 SFTP(SSH File Transfer Protocol) 中,默认是不支持匿名登录的,这和传统的 FTP(如 vsftpd 的 anonymous 模式)不同。
下面分情况说明:
SFTP 是基于 SSH(通常是 OpenSSH) 的,而 SSH 要求:
OpenSSH 没有“anonymous”这个内置用户机制,所以:
❌ 默认
sftp anonymous@host是不行的
anonymous 的系统用户你可以手动创建一个用户:
useradd -m anonymous
passwd anonymous
然后限制该用户:
编辑 /etc/ssh/sshd_config:
Match User anonymous
ChrootDirectory /srv/sftp/anonymous
ForceCommand internal-sftp
PasswordAuthentication yes
重启 SSH:
systemctl restart sshd
✅ 效果:用户用 anonymous 登录,像“匿名 SFTP”
~/.ssh/authorized_keys用户只要拿私钥就能登录,看起来像“无需账号密码”。
如果你真的需要匿名文件下载,更常见的是:
vsftpd + anonymous_enable=YES⚠️ FTP 不安全,建议用 FTPS(FTP over SSL)
| 方式 | 是否支持匿名 | 说明 |
|---|---|---|
| SFTP(默认) | ❌ 不支持 | 必须系统用户 |
| SFTP + anonymous 用户 | ✅ 可行 | 手动创建 |
| SFTP + 公钥 | ✅ 可行 | 免密登录 |
| FTP | ✅ 原生支持 | 不安全 |
如果你愿意,我可以:
你打算用在什么场景?(内网 / 公网 / 文件共享?)