【问题标题】:EC2 SSH port 22 connection refused even though previously worked即使以前工作过,EC2 SSH 端口 22 连接也被拒绝
【发布时间】:2012-09-08 23:19:02
【问题描述】:

我有一个 EC2 实例,我在上面托管了几个站点,并且它以前运行得非常好。

今天我尝试 SSH 进入它,它只是拒绝端口 22 上的连接,即使安全组已打开它并且安全组已设置为实例。

谁能帮我看看为什么会这样?

我每次都得到这条线 - ssh: connect to host 54.247.99.86 port 22: Connection denied

【问题讨论】:

  • 我的意思是我什至使用了以前也可以使用的相同命令。
  • 听起来您的 sshd 可能已关闭,据我记得,如果应用防火墙,您会超时。
  • 不确定我该如何重新启动它?
  • 其他人可能有更好的主意,但是由于您没有 ssh 就无法访问命令行,因此除了实例重启之外我看不到任何方法。不过,您可能希望其他人在采取严厉措施之前仔细检查安全组配置,以确保。
  • 我已尝试重启实例,但即使在此之后它仍然拒绝。你认为最好的做法是什么。奇怪的是,它仍然可以正常工作 - davidheward.com

标签: ssh amazon-ec2 amazon-web-services


【解决方案1】:

如果您的实例是基于 EBS 而不是实例存储,则首先获取 ami 映像作为备份,然后停止实例,启动新的原始实例。

由于您的旧实例基于 EBS,因此分离卷并将其附加到新实例。将其挂载到某个目录后,更改权限 /var/empty/sshd,同时执行 cat /etc/fstab 以了解 / 分区挂载在哪里。现在将卷从新实例附加到旧实例,并使用您在 fstab 中时的确切挂载点,例如 /dev/sda1 for /。

连接后,启动旧实例并检查您是否能够登录。

【讨论】:

  • 好吧,试试看,任何可以避免重建整个东西的东西对我来说听起来不错。
【解决方案2】:

要解决此问题,您可以按照以下步骤进行操作:

  1. 在同一区域启动一个新实例(以便我们稍后将 EBS 卷附加到该实例)。
  2. 停止当前实例并分离 EBS 卷
  3. 将该卷附加到位于 /dev/sdf 的新实例。
  4. SSH 进入新实例并运行以下命令:sudo mount /dev/sdf /mnt
  5. 运行此命令:cat /mnt/etc/rc.d/rc.local

如果输出包含这些行,请将其从 rc.local 文件中删除:

    cat <<EOL >> /etc/ssh/sshd_config
    UseDNS no
    PermitRootLogin without-password
    EOL
  1. 修改 rc.local 文件后,您可以卸载 EBS 卷,将其与临时实例分离,然后将其附加回位于 /dev/sda1 的原始实例。您应该能够通过 SSH 连接到您的实例。

这似乎是一个临时修复。如果您重新启动,这将再次发生。我也在寻找永久修复。

【讨论】:

  • 从 Ubuntu 14.04 升级到 18.i04 后对我来说同样的问题。我没有 rc.local 文件,所以......?
猜你喜欢
  • 1970-01-01
  • 2016-02-15
  • 2017-12-01
  • 1970-01-01
  • 2015-02-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
相关资源
最近更新 更多