我正在尝试在我的服务器上设置 SFTP,但遇到了麻烦。我已经可以使用密钥身份验证通过 SSH 顺利登录服务器,但当通过 SFTP 连接 FileZilla 时,我收到错误:Disconnected: No supported authentication methods available (server sent: publickey)
。尝试使用sftp
或scp
命令上传文件时,都出现类似的错误。
我现在已经关闭了密码验证,但我打开它进行了测试,但Authentication Failed
在 SFTP 上却出现了错误。
我知道这篇文章之前已经发布过大约一百次了,但我找不到任何人遇到与我完全相同的错误。
答案1
核心问题是您的 SFTP 服务器需要 SSH 密钥身份验证才能正确允许连接。您提到了 FileZilla,所以我这样写了这个答案。
对于 Filezilla,您可以将其用于不受密码保护的 SSH 密钥:
- 打开 FileZilla 客户端。
- 在主屏幕顶部,单击“编辑”并选择“设置”。
在菜单左侧,展开“连接”部分并突出显示“SFTP”。
点击[添加密钥文件...]按钮,浏览本地机器的目录并选择您的私钥文件。
- 然后,再次从 FileZilla 主屏幕顶部单击“文件”并选择“站点管理器”。
最后,在站点管理器的左侧,单击“新建站点”按钮,并在“我的站点”下输入一个唯一的名称,以便您将来可以轻松识别这个特定的远程服务器。
现在,在“常规”选项卡下,填写主机(使用 IP 地址或 FQDN)和端口字段(默认为 22)。
- 在协议下拉菜单中,选择 SFTP - SSH 文件传输协议。
- 在登录类型下拉菜单中,选择交互式。
如果您的 SSH 密钥受密码保护,那么您将需要使用其他东西。
这说,通常有一种方法可以在大多数 GUI 中使用 SFTP。在 Ubuntu 16.04 上,Nautilus 有一个“连接到服务器”按钮(大多数其他 GUI 文件浏览器都有类似的功能),您可以在其中指定它,sftp://user@remotelocation:22/path/on/server
它应该与通常已经在运行并索引您的密钥的工具集成ssh-agent
。然后它应该可以“工作”,而不必做任何有趣的事情,并遵守 SFTP 规则。