【问题标题】:AWS EC2 Connection closed by when trying ssh into instanceAWS EC2 连接在尝试 ssh 进入实例时关闭
【发布时间】:2013-06-04 06:38:53
【问题描述】:

最近我设置了一个新的 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

有没有办法解决这个问题?还是我应该重新安装我的实例?

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

【问题讨论】:

标签: ssh amazon-web-services amazon-ec2 connection ubuntu-12.04


【解决方案1】:

我在使用 ubuntu 虚拟机时遇到了这个问题,所以:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我的组已经设置好了,这成功了。谢谢!
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        通常,您应该使用用于启动实例的 AMI 的默认用户名:

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

        • 对于 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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 为什么这个答案有 57 个赞成票是第 4 名而不是第 1/2 名?
          • 我有点希望这个答案首先出现,因为它是更安全的选择(除非您已经用尽所有其他可能性,否则您不希望将您的 Sec Group 配置为公开开放!)
          • 我觉得这应该在答案中很明显,因为用户通常会启动一个 ubuntu 实例。对我来说同样的问题。
          • 我认为这个问题主要是因为aws documentation on ssh access 确实暗示用户 ec2-user + 在实例上的 aws.console 中没有提到默认用户名一个新创建的实例。不是亚马逊的最佳作品,抱歉!
          • 他们应该在这个页面上声明这一点docs.aws.amazon.com/AWSEC2/latest/UserGuide/…。这对我来说有点浪费时间:)
          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            我遇到了这个问题,结果证明 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
            

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

            【讨论】:

              【解决方案9】:

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

              使用默认出站规则

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

              它会起作用的。

              【讨论】:

              • 这样安全吗?如果我打开所有流量和端口?有没有其他办法?
              • @Mrsreez 这是针对出站流量的,您没有向入站流量开放所有端口。
              【解决方案10】:

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

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

              【讨论】:

              • Freya Ren,感谢您的回复。是的,.pem 文件的路径设置正确。我仔细检查了这一点。我不允许通过 Web 界面将其他密钥关联到我的实例。在这个问题出现之前我已经创建了一个快照,有什么建议可以帮助吗?谢谢。
              • 这很奇怪,因为错误显示“webserver.pem 无法访问:没有这样的文件或目录”。也许你应该试试这个“chmod -R go-wrx ~/.ssh”。或者,您应该仔细检查实例是终止还是使用了另一个键。如果这仍然不起作用,我想你应该启动另一个实例并尝试。
              • 我已经更新了调试日志,所以我以前的实例也有同样的问题,这就是我必须设置一个新实例的原因,我不知道它为什么坏了没有改变我的任何东西......
              • 我刚刚创建了另一个实例,我可以连接到它。所以我宁愿重新设置一切。
              • @VictorDavydov,这对我来说经常发生,无法重新连接到我之前可以连接的实例。就我而言,这是因为我的 ISP 偶尔会更改我的家庭 IP 地址。因此,在这种情况下,我进入 AWS 控制台并编辑要分组的安全性,然后在 SSH Allow From 中再次选择“我的 IP”。之后我又可以连接了。
              猜你喜欢
              • 2018-11-28
              • 2023-03-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-15
              • 1970-01-01
              • 2020-08-07
              相关资源
              最近更新 更多