AWS - 已断开连接:没有可用的支持身份验证方法(服务器已发送:publickey)

时间:2014-07-05 14:32:40

标签: amazon-web-services ssh putty

我的AWS服务器的SSH刚刚破坏了Putty和Filezilla。我正在努力使这篇文章成为一个全面的故障排除列表,所以如果你共享其他堆栈溢出页面的链接,我会将它们编辑成问题。

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


几乎在一年前我建立连接时,这个错误很常见。如果您是第一次设置AWS SSH,则可以解决最常见的问题:

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

  • 错误的IP:无法保证重新启动AWS实例(或创建映像)保留相同的IP地址。这显然必须在putty中更新。

还有哪些其他可能性?

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

/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

20 个答案:

答案 0 :(得分:12)

当您拥有正确的Linux用户但尚未创建文件.ss​​h / authorized_keys并保存公共密钥时,您还会收到“已断开连接:没有可用的支持的身份验证方法(服务器已发送:publickey)”,如{ {3}}

答案 1 :(得分:12)

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

答案 2 :(得分:10)

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

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

这解决了这个问题。

答案 3 :(得分:8)

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

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

    ubuntu AMI上的
  • ubuntu root
  • 亚马逊Linux AMI上的
  • ec2-user
  • Centos AMI
  • centos
  • Debian AMI上的
  • debian root
  • Fedora上的
  • ec2-user fedora
  • ec2-user root :RHEL AMI,SUSE AMI,其他。

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

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

答案 4 :(得分:7)

对我来说,在我通过

更改用户的主目录后,此错误立即出现
sudo usermod -d var/www/html username

由于缺少〜/ .ssh中的authorized_key文件的适当权限,也可能发生这种情况。确保此文件的权限为0600,〜/ .ssh的权限为700。

答案 5 :(得分:7)

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

基本步骤,正如其他人所描述的那样。

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

答案 6 :(得分:2)

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

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

离。当我将密钥对命名为“AWS.FREE.LINUX”时,始终拒绝连接。当我命名为“AWS_FREE_LINUX”时,一切正常。

希望这会有所帮助。

答案 7 :(得分:1)

不要生成私钥

您的问题是,当打开 puttygen 时,您正在加载 file-from-aws.pem 您点击的是 Generate this is wrong ,只需点击 save private key 按钮

enter image description here

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

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

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

  

aws opsworks寄存器-基础结构类ec2 --ssh用户名   ec2-user --ssh-private-key“ C:\ key.ppk”

答案 14 :(得分:0)

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

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

今天我发生了类似的问题。我也搜过了很多这个。没人帮忙。我刚刚进行了两次更改,它也能正常工作。

  1. 我访问了Amazon documentation,其中描述了验证是否存在允许从您的计算机到端口22(SSH)的流量的规则,如果不存在,则创建它并编辑"安全组"并添加" SSH"到我的IP。这会有所帮助。
  2. 在我的情况下,在putty配置文件中,我必须再次使用.ppk文件进行授权。我不知道为什么再问,没有做任何改动。
  3. 希望它会对你有所帮助。

答案 17 :(得分:0)

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

答案 18 :(得分:-1)

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

我将旧卷安装到新计算机上,然后检查.ssh / authorized_key并且无法找到任何有关权限或内容的问题。

答案 19 :(得分:-1)

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

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

a coupleplaces中,我找到了直接在Putty会话定义中指定密钥的建议:Putty Configuration>连接> SSH> Auth> "用于身份验证的私钥文件",然后以.ppk格式浏览到您的密钥文件。

在没有运行Pageant的情况下执行此解决了我的问题。