EC2实例使用FileZilla连接FTP报错:No supported authentication methods available (server sent: publickey) 排查求助
你好!看到你在EC2上配置了FTP服务,用FileZilla连接时遇到了认证失败的问题,先把你提到的错误日志贴出来方便参考:
Command: open "ftphyb@ec2-3-8-24-114.ca-central-1.compute.amazonaws.com" 22
Status: Using username "ftphyb".
Status: Server refused our key
Status: Server refused our key
Status: Server refused our key
Status: Server refused our key
Error: FATAL ERROR: No supported authentication methods available (server sent: publickey)
Error: Could not connect to server
(注:你提到上面的IP和FTP信息仅为演示使用,非真实数据)
结合这个错误提示,给你整理几个最可能的排查方向,你可以逐个验证:
先排查FileZilla的连接协议是否选错
这是最容易踩的坑!错误提示里服务器明确只接受publickey认证,很大概率是你在FileZilla里误选了「SFTP - SSH文件传输协议」,但你实际配置的是基于用户名密码的普通FTP服务。SFTP依赖SSH公钥体系,而你没给这个FTP用户配置SSH公钥,自然会被拒绝。
解决方法:打开FileZilla的连接管理器,把协议改成「FTP - 文件传输协议」,登录类型选择「正常」,再输入你创建的FTP用户名和密码,重新尝试连接。检查FTP服务的配置是否禁用了密码认证
假设你用的是最常见的vsftpd服务,登录到EC2实例后,打开配置文件/etc/vsftpd/vsftpd.conf,重点检查以下参数:- 确认
local_enable=YES:这个参数控制是否允许本地用户(也就是你创建的FTP用户)登录 - 确认没有设置
password_authentication=NO:如果有这个参数且值为NO,就会禁用密码登录 - 若开启了SSL,需确认FileZilla对应配置了SSL连接:如果
ssl_enable=YES,那FileZilla里要勾选“要求显式FTP over TLS”,否则也会导致认证失败
修改配置后记得重启FTP服务:sudo systemctl restart vsftpd
- 确认
验证FTP用户的有效性与权限
先在EC2实例本地测试该用户是否能正常登录:执行su - ftphyb,输入你设置的密码,看能不能成功切换到该用户的环境。如果切换失败,说明用户创建过程有问题,比如密码未正确设置、用户被锁定,或者家目录不存在。
另外还要检查用户家目录的权限:FTP服务通常会拒绝权限过于开放的家目录(比如777权限),建议把家目录权限设置为755(用户可读可写可执行,其他只读)或者700(仅用户自己可访问)。排查PAM认证模块的限制
有些情况下,PAM(可插拔认证模块)会限制FTP用户的登录方式。打开/etc/pam.d/vsftpd文件,检查是否有强制要求公钥认证的规则,比如类似auth required pam_ssh_keyfile.so的配置,如果有,注释掉该规则后重启FTP服务再试。
备注:内容来源于stack exchange,提问作者user9437856

