77

Recently I set up a new EC2 instance. The next day I was not able to connect to my instance via ssh. I could connect and disconnect the day before, I am sure I did nothing. Here is ssh debug info:

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

Is there a way to resolve this issue? Or shall I reinstall my instance again?

PS rights to my .pem are set to 600.

4

10 回答 10

452

我的问题是用户名不正确。在 ubuntu 实例上它应该是“ubuntu”,在 amazon 实例上它应该是“ec2-user”。

于 2019-03-13T20:11:04.273 回答
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

于 2019-09-14T20:28:17.390 回答
16

请检查您的用户名。如果您使用的是 ubuntu 实例,请尝试在用户名中使用“ubuntu”而不是“ec2-user”,反之亦然

于 2020-08-29T13:09:20.933 回答
13

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

使用默认出站规则

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

它会起作用的。

于 2015-01-13T15:03:06.137 回答
1

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

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

于 2013-06-07T21:05:01.447 回答
0

我在ubuntu vm上遇到了这个问题,所以:

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

之后,通过实例连接获得访问权限

于 2021-11-19T15:56:53.193 回答
0

我遇到了这个问题,结果证明 PEM 文件不正确。您可以按照Amazon EC2 Key Pairs - Verifying Your Key Pair's Fingerprint中的说明进行检查:

如果您使用 AWS 创建了密钥对,则可以使用 OpenSSL 工具从私有密钥文件生成指纹:

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

如果您使用第三方工具创建了密钥对并将公钥上传到 AWS,则可以使用 OpenSSL 工具从本地计算机上的私钥文件生成指纹:

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

输出应与控制台中显示的指纹匹配。

于 2019-02-08T00:17:17.123 回答
0

我有同样的问题,但我通过“重新启动”EC2 来修复它。请注意,重新启动 EC2 不会更改其 IP 地址,但停止并再次启动它会更改它。

这是一个简单的修复,但请确保您可以承受短暂的停机时间。就我而言,网站突然停止工作。

于 2020-06-26T17:10:11.993 回答
0

通过创建一个新的私钥文件/对解决了这个问题。

当我想在创建后几天重用现有密钥时,问题就出现了。然后,只需使用此处提供的命令

于 2021-03-26T09:34:26.697 回答
0

我有同样的问题,它是您授予 pem 私钥文件的权限的问题。确保使用 sudo(管理)访问权限在终端中运行 ssh 命令。

于 2019-04-27T14:34:50.533 回答