当尝试通过ssh连接实例时,AWS EC2连接被关闭

79

最近我设置了一个新的EC2实例。第二天我无法通过SSH连接到我的实例。前一天我能够连接和断开连接,我确定我没有做任何更改。以下是SSH调试信息:

ssh -i webserver.pem -v ubuntu@my.elastic.ip
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to my.elastic.ip [my.elastic.ip] port 22.
debug1: Connection established.
debug1: identity file webserver.pem type -1
debug1: identity file webserver.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
Connection closed by my.elastic.ip

有没有解决这个问题的方法?还是我需要重新安装我的实例?

PS:我的.pem文件权限设置为600。


无法连接Amazon AWS EC2实例的SSH? - richvdh
11
在复制长连接 URL 时,很容易忘记输入 "ubuntu@"! - Fattie
11个回答

454

我的问题在于用户名不正确。在Ubuntu实例上,应该是"ubuntu",而在Amazon实例上,应该是"ec2-user"。


2
为什么这个得到57个赞的答案排在第四而不是第一或第二呢? - Jeppe
7
我希望这个答案能排在第一位,因为它是更安全的选择(除非你已经尝试过所有其他可能性,否则不要将您的安全组配置为公开开放!) - olisteadman
1
我认为问题主要是因为AWS关于SSH访问的文档暗示了在aws.console上使用用户ec2-user,但在新创建的实例中从未提到默认用户名。这不是亚马逊最好的工作,抱歉! - humanityANDpeace
如果是Ubuntu AMI,则用户名应为ubuntu - Pedram
1
他们应该在这个页面 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html 中说明。这对我来说有点浪费时间 :) - icn
显示剩余4条评论

45
通常情况下,您应该使用启动实例所用的AMI的默认用户名:
  • 对于Amazon Linux 2或Amazon Linux AMI,用户名为
    ec2-user。

  • 对于CentOS AMI,用户名为centos。

  • 对于Debian AMI,用户名为admin或root。

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

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

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

  • 对于Ubuntu AMI,用户名为ubuntu。

    否则,如果ec2-user和root无法使用,请与AMI提供商联系。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connection-prereqs.html#connection-prereqs-get-info-about-instance


16
请检查您的用户名。如果您正在使用Ubuntu实例,请尝试使用“ubuntu”代替“ec2-user”作为用户名,反之亦然。

我的团队已经准备就绪,这个方法很有效。谢谢! - Leonardo Pessoa

15

请检查您的安全组。确保您有一个允许实例返回流量的出站规则。

使用默认出站规则

type: All traffic, Protocol: All, Ports: All, Destination: 0.0.0.0/0

它会起作用。


这样做安全吗?如果我打开所有流量和端口?有其他的方法吗? - Mrsreez
@Mrsreez 这是针对“出站”流量的,您并没有向“入站”流量开放所有端口。 - JBaczuk

1

(1)请检查您执行ssh命令时,是否在放置pem密钥的同一文件夹中。否则,您应该使用“ssh -i /your_key_path /mykey.pem”。

(2) 如果这并没有帮助,我认为您可以创建另一个密钥,并通过AWS网页设置您的EC2实例。然后再试一次。


任Freya Ren,感谢您的回复。 是的,.pem文件路径已正确设置。我进行了双重检查。 我不允许通过Web界面将其他密钥关联到我的实例。 在此问题出现之前,我已创建了一个快照,您有什么建议可以帮助解决这个问题吗? 谢谢。 - Victor Davydov
很奇怪,错误显示“webserver.pem不可访问:没有这个文件或目录”。也许你应该尝试这个命令“chmod -R go-wrx ~/.ssh”。或者,你应该再次检查实例是否已终止或使用了另一个密钥。如果还是不行,我猜你应该启动另一个实例并尝试。 - Freya Ren
我已更新调试日志, 所以我之前的实例也遇到了同样的问题,这就是为什么我不得不设置一个新的实例,我不知道为什么它会出现故障,因为我在我的端上没有做任何更改... - Victor Davydov
我刚刚创建了另一个实例,我可以连接到它。 所以我宁愿重新设置一切。 - Victor Davydov
@VictorDavydov,我经常遇到无法重新连接到以前可以连接的实例的情况。在我的情况下,这是因为我的ISP偶尔会更改我的家庭IP地址。因此,在这种情况下,我进入AWS控制台并编辑安全组,并在SSH Allow From中再次选择“My IP”。之后我就能再次连接了。 - Sorin Postelnicu

0

我曾经遇到过这个问题,后来发现 PEM 文件不正确。你可以按照 Amazon EC2 密钥对 - 验证密钥指纹 中的说明进行检查:

If you created your key pair using AWS, you can use the OpenSSL tools to generate a fingerprint from the private key file:

$ openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

If you created your key pair using a third-party tool and uploaded the public key to AWS, you can use the OpenSSL tools to generate a fingerprint from the private key file on your local machine:

$ openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c

The output should match the fingerprint that's displayed in the console.


0

我曾经遇到过同样的问题,这是与 pem 私钥文件所授予的权限有关。请确保您在终端中使用 sudo(管理员)访问权限运行 ssh 命令。


0

我在Ubuntu虚拟机遇到了这个问题,所以:

  1. 22/tcp访问权限的安全组没问题
  2. 用户名是ubuntu,没问题
  3. 使用pem密钥进行访问
  4. /var/log/auth.log显示会话在预验证阶段结束(不正常)
  5. 注意到缺少一个软件包:ec2-instance-connect(参考:https://aws.amazon.com/premiumsupport/knowledge-center/ec2-instance-connect-troubleshooting/)(不正常)
  6. sudo apt install ec2-instance-connect

之后,通过实例连接成功访问。


0

在使用EC2实例连接时,我遇到了这个问题。最终,在将我的Ubuntu版本从22降级为20之后,我终于能够连接了。


0
通过创建新的私钥文件/对,解决了这个问题。
在我想重复使用已有密钥几天后出现了问题。 然后,只需使用此处提供的命令here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接