【问题标题】:AWS - Disconnected : No supported authentication methods available (server sent :publickey)AWS - 断开连接:没有支持的身份验证方法可用(服务器发送:publickey)
【发布时间】:2023-03-26 15:30:01
【问题描述】:

到我的 AWS 服务器的 SSH 刚刚因 Putty 和 Filezilla 而中断。我正在努力使这篇文章成为一个全面的故障排除列表,因此如果您共享指向其他堆栈溢出页面的链接,我会将它们编辑到问题中。

Disconnected : No supported authentication methods available (server sent :publickey)


大约一年前我建立连接时,这个错误就很熟悉了。如果您是第一次设置 AWS SSH,这些可以解决最常见的问题:

但是,我认为唯一会影响以前工作的系统的是:

  • 错误的 IP: 重新启动 AWS 实例(或创建映像)不能保证保持相同的 IP 地址。这显然必须在腻子中更新。

还有哪些其他可能性?

对此的解决方案(根据下面接受的帖子)是 AWS EC2 所有这 3 个都需要具有适当的权限(777 not ok 对于其中任何一个)。这是一个有效的例子:

/home/ec2-user/ - 700
/home/ec2-user/.ssh/ - 600
/home/ec2-user/.ssh/authorized_keys - 600

/var/log/secure 会告诉你哪个抛出了错误,如果你完全被锁定,请参考这个视频教程来获得访问权限: http://d2930476l2fsmh.cloudfront.net/LostKeypairRecoveryOfLinuxInstance.mp4

【问题讨论】:

    标签: amazon-web-services ssh putty


    【解决方案1】:

    当您拥有正确的 Linux 用户但尚未创建文件 .ssh/authorized_keys 并按照 @ 中所示保存公钥时,您还将收到“已断开连接:没有可用的受支持的身份验证方法(服务器发送:publickey)” 987654321@

    【讨论】:

      【解决方案2】:

      在尝试通过 Putty 连接到 SiteGround 服务器时,我遇到了同样的问题。 Their instructions 非常彻底,必须为某些人工作,但对我不起作用。

      他们建议运行 pageant.exe,它在后台运行。您向 Pageant 注册了您的密钥,它应该让 Putty 在尝试连接时知道这些密钥。

      placesa couple 中,我找到了直接在Putty 会话定义中指定密钥的建议:Putty 配置> 连接> SSH > Auth > “用于身份验证的私钥文件”,然后浏览到. ppk 格式。

      在不运行 Pageant 的情况下执行此操作为我解决了这个问题。

      【讨论】:

        【解决方案3】:

        PuTTY 本身不支持 Amazon EC2 生成的私有密钥格式 (.pem)。 PuTTY 有一个名为 PuTTYgen 的工具,它可以将密钥转换为所需的 PuTTY 格式 (.ppk)。在尝试使用 PuTTY 连接到您的实例之前,您必须将您的私有密钥转换为这种格式 (.ppk)。

        此处描述了如何执行此操作的步骤:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html

        这解决了问题。

        【讨论】:

          【解决方案4】:

          基于多个实例,如果密钥文件和用户名正确,则在更改与root用户关联的某些目录权限时似乎会发生这种情况。

          【讨论】:

            【解决方案5】:

            还有另一个原因会影响以前工作的系统。我重新创建了我的实例(使用 AWS OpsWorks)以使用 Amazon Linux 而不是 Ubuntu,并在这样做后收到此错误。切换到使用“ec2-user”作为用户名而不是“ubuntu”为我解决了这个问题。

            【讨论】:

            • 我发现如果你使用“root”,它会告诉你它希望你尝试使用哪个用户。 :) 不知道为什么,但这就是我发现要连接的用户的方式。 (不,它没有以 root 身份连接。)
            【解决方案6】:

            今天我也遇到了类似的问题。我也对此进行了很多搜索。没有人帮助。我刚刚做了两个更改,它也可以正常工作了。

            1. 我曾访问过Amazon documentation,其中描述了验证是否存在允许从您的计算机到端口 22 (SSH) 的流量的规则,如果不存在,请创建它并编辑“安全组”并将“SSH”添加到我的知识产权。这会有所帮助。
            2. 就我而言,在腻子配置文件中,我必须再次使用 .ppk 文件进行授权。我不知道为什么它再次询问,没有做任何更改。

            希望对你有所帮助。

            【讨论】:

              【解决方案7】:

              对我来说,在我更改用户的主目录后立即出现此错误

              sudo usermod -d var/www/html username
              

              这也可能是由于对 ~/.ssh 中的 authorized_key 文件缺乏适当的权限而发生的。确保此文件的权限为 0600,~/.ssh 的权限为 700。

              【讨论】:

              • 我重命名了目录,但忘记在/var/passwd更新它
              • +1 表示对文件和目录的特定权限。我尝试了非常相似的设置(例如,文件上的 644,如 askubuntu 上的答案所示),但它们不起作用。具体值 600 和 700 有效。
              【解决方案8】:

              在大多数情况下,使用错误的用户名登录时不会出现身份验证方法错误。但如果您仍然遇到连接问题并且您已尝试上述所有选项,我确实会找到其他方法。

              我创建了几个 Linux VM 并尝试重现此类连接问题,我发现的一件事是,当 AWS 要求您命名您的密钥对时,请勿在密钥对中使用空格 (" ") 和点 (".")名称,甚至 AWS 实际上也允许您这样做。

              例如。当我将密钥对命名为“AWS.FREE.LINUX”时,连接总是被拒绝。当我命名为“AWS_FREE_LINUX”时,一切正常。

              希望这会有所帮助。

              【讨论】:

                【解决方案9】:

                在 ssh 会话期间,我的连接中断,从那时起我无法 ssh 我的 SRV,我已经启动了一个新实例,并且我能够 ssh 新实例(使用相同的密钥)。

                我将旧卷挂载到新机器上,并检查 .ssh/authorized_key 并没有发现权限或内容有任何问题。

                【讨论】:

                  【解决方案10】:

                  我遇到了同样的问题,我使用 Public DNS 而不是 Public IP。现在解决了。

                  【讨论】:

                    【解决方案11】:

                    我遇到了同样的问题,不小心弄错了。我会在这里分享,以防有人犯了同样的错误。

                    基本步骤,如其他人所述。

                    1. 下载 putty 和 puttygen,或 putty 包并安装。
                    2. 从您的 AWS EC2 实例中获取 .pem 文件。
                    3. 使用 puttygen 转换 .pem 文件,以便您拥有私钥 --- 这里发生了错误。我从 PuttyGen 中选择了“转换”选项卡,然后加载了我的 .pem 文件。加载 pem 文件后,此处不要点击“生成”,而是直接“保存私钥”。这就是你需要的钥匙。如果单击“生成”,您将拥有完全不同的一对密钥。
                    4. 在 putty 中,使用 ec2-user@your.public.dns.that.you.get.from.aws.ec2.instance,并在 SSH/Auth 中加载私钥

                    祝你好运!

                    【讨论】:

                    • 非常感谢。
                    • 我错误地点击了“生成”密钥,所以在尝试生成新密钥后它也给出了同样的错误,你能给出解决方案吗
                    • 哇....那是真的....我不敢相信我犯了这个愚蠢的错误。我浪费了半天时间来解决这个问题。非常感谢。
                    • 谢谢。浪费了30分钟,然后得出了这个答案。这解决了我的问题。
                    【解决方案12】:

                    在我的情况下,问题是 ppk 文件放置在 %USERPROFILE%\Downloads 而不是 %USERPROFILE%.ssh 文件夹中。

                    我移动文件后,问题就消失了。

                    【讨论】:

                      【解决方案13】:

                      综合答案在这里:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html

                      您的问题可能与 不正确的登录 有关,具体取决于 AMI。 在以下 AMI 上使用以下登录名:

                      • ubunturoot 在 ubuntu AMI 上
                      • ec2-user 在 Amazon Linux AMI 上
                      • centos 在 Centos AMI 上
                      • debianroot 在 Debian AMI 上
                      • ec2-userfedora 在 Fedora 上
                      • ec2-userroot 开启:RHEL AMI、SUSE AMI 等。

                      如果您使用的是操作系统:

                      • Windows - 从 AWS 网站获取 PEM 密钥并使用 PuttyGen 生成 PPK 文件。然后使用 Putty 使用 PPK(使用左栏选择它:Connection->SSH->Auth: Private key for authentication)
                      • Linux - 运行:ssh -i your-ssh-key.pem login@IP-or-DNS

                      祝你好运。

                      【讨论】:

                      • 你这个家伙,我刚刚通过你的回答弄清楚了这一点。由你决定
                      【解决方案14】:

                      对我来说,我只需要告诉 FileZilla 私钥在哪里:

                      1. 从主菜单中选择编辑 > 设置
                      2. 在“设置”对话框中,转到“连接”>“SFTP”
                      3. 点击“添加密钥文件...”按钮
                      4. 导航并选择所需的 PEM 文件

                      【讨论】:

                        【解决方案15】:

                        我正在使用 OpsWorks,并希望在 AWS Cli 上从我的 Windows 机器注册一个新的现有 Linux 实例。

                        第一个问题是,我必须使用 Putty 生成的 .pkk 文件

                        第二个问题是我需要像这样引用该 .pkk 文件的绝对路径:

                        aws opsworks register --infrastructure-class ec2 --ssh-username ec2-user --ssh-private-key "C:\key.ppk"

                        【讨论】:

                          【解决方案16】:

                          在我为我的文件(包括我保存 ssh 密钥的目录)打开 Microsoft One Drive 备份和同步后,我发生了“已断开连接:没有可用的受支持的身份验证方法(服务器发送:公钥)”。在我的情况下,解决方案很简单:只需转到 Putty => SSH => Auth 并再次(重新)浏览到我的相同密钥所在的位置并保存,然后它就可以工作了。它看起来像 Microsoft One Drive 之类的备份和同步软件(可能与 Google Drive 相同),如果指定了关键目录,则会影响 Putty 查看和识别目录的方式,然后稍后安装或打开备份和同步,包括目录。

                          【讨论】:

                            【解决方案17】:

                            在我的情况下,问题出在主机名/公共 DNS 上。我将 Elastice IP 与我的实例相关联,然后我的 DNS 发生了变化。我试图连接旧的 DNS。将其更改为新的解决了该问题。您可以通过转到您的实例然后单击查看详细信息来查看详细信息。

                            【讨论】:

                              【解决方案18】:

                              登录取决于您创建的 AMI。登录时使用左侧数据作为用户名。

                              ubuntu- ubuntu AMIs
                              ec2-user- Amazon Linux AMI
                              centos- Centos AMI
                              debian or root- Debian AMIs6
                              ec2-user or fedora- Fedora
                              

                              【讨论】:

                                【解决方案19】:

                                不生成私钥

                                你的问题是,当你打开puttygen时你正在加载file-from-aws.pem你点击生成这是错误的,只需点击save private key按钮

                                【讨论】:

                                • 谢谢兄弟。在所有解决方案中,这个对我有用。
                                【解决方案20】:

                                这发生在我身上,因为在 Load pem 文件到 puttygen 之后,我按下了 generate 按钮,然后按下了 save the private key。不需要按Generate 按钮。只需Load 并按Save Private Key

                                【讨论】:

                                  【解决方案21】:

                                  为了让它与我的 AWS Linux 实例一起工作,我必须在点击“保存私钥”之前将 PuTTYgen 中的“要生成的密钥类型”从“RSA”更改为“EdDSA”。

                                  我希望这对其他人有所帮助。

                                  【讨论】:

                                    【解决方案22】:

                                    如果您使用 PuTTY 连接到您的实例并收到以下错误之一,错误:服务器拒绝我们的密钥或错误:没有可用的受支持的身份验证方法,请验证您使用 AMI 的适当用户名进行连接。在 PuTTY 配置窗口的用户名中键入用户名。

                                    相应的用户名如下:

                                    对于 Amazon Linux 2 或 Amazon Linux AMI,用户名为 ec2-user。

                                    对于 CentOS AMI,用户名为 centos 或 ec2-user。

                                    对于 Debian AMI,用户名为 admin。

                                    对于 Fedora AMI,用户名为 fedora 或 ec2-user。

                                    对于 RHEL AMI,用户名为 ec2-user 或 root。

                                    对于 SUSE AMI,用户名为 ec2-user 或 root。

                                    对于 Ubuntu AMI,用户名为 ubuntu。

                                    对于 Oracle AMI,用户名为 ec2-user。

                                    对于 Bitnami AMI,用户名为 bitnami。

                                    否则,请咨询 AMI 提供商。

                                    【讨论】:

                                      猜你喜欢
                                      • 2020-09-23
                                      • 1970-01-01
                                      • 2018-04-02
                                      • 2018-05-21
                                      • 2016-05-26
                                      • 2013-12-16
                                      • 2018-08-17
                                      • 2019-12-05
                                      • 2016-06-05
                                      相关资源
                                      最近更新 更多