Amazon EC2-重启后无 SSH,连接被拒绝

Amazon EC2-重启后无 SSH,连接被拒绝

我已经重复了两三次,所以我猜我所做的事情有问题。

以下是我的步骤:

  1. 使用以下设备通过 EC2 管理控制台启动新实例:Ubuntu Server 13.10 - ami-ace67f9c(64 位)
  2. 使用默认设置启动(使用我现有的密钥对)
  3. 实例启动。我可以使用 Putty 或 Mac 终端通过 SSH 连接到它。成功!
  4. 我重启实例
  5. 10 分钟后,当实例重新启动并运行时,我的终端连接显示:

    stead:~ stead$ ssh -v -i Dropbox/SteadCloud3.pem [email protected]
    OpenSSH_5.6p1, Op`enSSL 0.9.8y 5 Feb 2013
    debug1: Reading configuration data /etc/ssh_config
    debug1: Applying options for *
    debug1: Connecting to 54.201.200.208 [54.201.200.208] port 22.
    debug1: connect to address 54.201.200.208 port 22: Connection refused
    ssh: connect to host 54.201.200.208 port 22: Connection refused
    stead:~ stead$
    

好吧,我知道公共 IP 地址可以更改,因此检查 EC2 管理控制台,我确认它是相同的。很奇怪。只是为了好玩,我尝试使用公共 DNS 主机名连接:ec2-54-201-200-208.us-west-2.compute.amazonaws.com。没有成功,结果相同。

即使使用 EC2 控制台内置的 Java SSH 客户端进行连接,我仍然会遇到连接被拒绝的情况。

我检查了安全组。此实例位于组 launch-wizard-4 中。查看此组的入站配置,允许从 0.0.0.0/0 进入端口 22,因此端口 22 应该在任何地方。我知道我正在访问我的实例,并且这是正确的安全组,因为我无法 ping 实例。如果我为该安全组启用 ICMP,我的 ping 会突然通过。

我在互联网上找到了一些其他帖子,其中有类似的错误消息,但大多数似乎都可以通过调整防火墙设置轻松解决。我尝试了其中几个,但都没有成功。

我猜我遗漏了一个简单的 EC2 步骤。感谢您提供的任何帮助,我很乐意提供更多信息或进一步测试!

更新-以下是来自 Amazon EC2 控制台的系统日志:http://pastebin.com/4M5pwGRt

答案1

今天我的 ec2 实例也出现了类似的情况,我追踪到这个问题:当我这样做时, sudo reboot now 机器挂起了,我必须从 aws 管理控制台手动重新启动它,当我这样做时, sudo reboot 它重新启动得很好。显然,“现在”不是重新启动的有效选项,正如这里指出的那样https://askubuntu.com/questions/397502/reboot-a-server-from-command-line

想法?

答案2

有关此主题的 AWS 开发人员论坛帖子

尝试停止损坏的实例,分离 EBS 卷,并将其作为辅助卷附加到另一个实例。将损坏的卷安装到另一个实例的某个位置后,检查 /etc/sshd_config 文件(靠近底部)。我有几个 RHEL 实例,Yum 会将 sshd_config 插入到底部的重复行,导致 sshd 因语法错误而启动失败。

一旦修复了它,只需卸载卷,分离,重新连接到其他实例并重新启动它。

让我们详细分析一下,并附上 AWS 文档的链接:

  1. 停止损坏的实例进入 EC2 管理控制台,单击“弹性块存储”>“卷”,然后右键单击与您停止的实例关联的卷,分离 EBS(根)卷。
  2. 启动新实例与损坏的实例位于同一区域且使用同一操作系统然后将原始 EBS 根卷作为辅助卷附加到新实例下面步骤 4 中的命令假定您将卷安装到名为“数据”的文件夹。
  3. 一旦你将损坏的卷安装到其他实例的某个位置
  4. 通过发出以下命令检查“/etc/sshd_config”文件中是否存在重复的条目:
    • cd /etc/ssh
    • sudo nano sshd_config
    • ctrl-v多次才能找到文件的底细
    • ctrl-k底部所有提到“PermitRootLogin without-password”和“UseDNS no”的行
    • ctrl-xY保存并退出编辑的文件
  5. @Telegard (在他的评论中)指出我们只是解决了症状。我们可以修复原因通过注释掉“/etc/rc.local”文件中的 3 行相关内容。因此:
    • cd /etc
    • sudo nano rc.local
    • 查找“PermitRootLogin...”行并将其删除
    • ctrl-xY保存并退出编辑的文件
  6. 修复后,只需卸载卷
  7. 进入 EC2 管理控制台,单击“弹性块存储”>“卷”,右键单击与已停止的实例关联的卷,以进行分离,
  8. 重新连接到其他实例
  9. 重新启动

答案3

运行 vanillasudo reboot命令后,我遇到了同样的问题。我发现,通过使用 AWS 控制台完全停止(而不是重新启动)我的 AMI,然后重新启动它,可以解决该问题。

无论出于什么原因,从 AWS 控制台重新启动 AMI(例如单击重新启动操作,而不是停止然后启动实例)确实不是解决问题。

答案4

右键单击实例名称,然后单击“更改安全组”。确保您创建的允许任何人从任何地方访问端口 22 的安全组已选中并应用于此实例。

相关内容