如何排查使用辅助 IP 地址连接到 EC2 实例时遇到的问题?

上次更新时间:2020 年 11 月 24 日

我无法使用辅助 IP 地址连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如何解决此问题?

简短描述

要使用辅助 IP 地址通过 SSH 连接到实例,请确保您的实例满足以下先决条件:

如果实例满足这些先决条件,请执行以下操作以排查通过 SSH 连接时遇到的问题:

  1. 使用详细消息通过 SSH 进行连接以识别错误。
  2. 查看系统日志以查找错误。

解决方法

注意:开始之前,请查看一般连接先决条件

使用详细消息通过 SSH 进行连接以识别错误

查看系统日志以查找错误

警告:开始此流程之前,请注意以下几点:

如果上述步骤无法解决问题,请查看实例的系统日志:

1.    打开 Amazon EC2 控制台

2.    从导航窗格中选择实例,然后选择尝试连接的实例。

3.    选择 Instance State(实例状态)、Stop Instance(停止实例),然后选择 Stop(停止)。注意 Instance ID(实例 ID)。

注意:如果您没有使用新 EC2 体验,请选择要连接的实例,然后依次选择 Actions(操作)、Instance State(实例状态)、Stop(停止)、Stop(停止)。

4.    将根 Amazon Elastic Block Store (Amazon EBS) 卷从停止的实例分离。在将根 EBS 卷从停止的实例分离之前,请记下根 EBS 卷的设备名称。故障排除后重新连接卷时,需要设备名称。

6.    在原始实例所在的可用区中启动新的 EC2 实例。新实例将成为您的“救援”实例。

注意:最佳做法是使用 Amazon Linux 2 实例作为救援实例。使用 Amazon Linux 2 实例可以防止救援实例因为 EBS 卷的 UUID 或名称相同而从附加的 EBS 卷中启动。

7.    启动救援实例后,从导航窗格中选择,然后选择受损实例已分离的根卷。

注意:如果受损实例的根卷具有 Marketplace 代码,而救援实例不是 Amazon Linux,则在附加根 EBS 卷之前停止救援实例。例如,如果您从官方 RHEL 或 CentOS AMI 启动实例,则实例可能具有市场代码。

8.    依次选择 Actions(操作)、Attach(附加)。

9.    在导航窗格中选择 Instances(实例),然后选择救援实例。

10.    依次选择 Instance state(实例状态)、Start instance(启动实例)。

注意:如果您没有使用新 EC2 体验控制台,请选择要连接的实例,然后依次选择 Actions(操作)、Instance State(实例状态)、Start(开始)。

11.    通过 SSH 连接到救援实例。

12.    运行以下命令以验证 EBS 卷是否成功附加到救援实例。在以下命令中,卷附加为 /dev/sdf

$ lsblk

以下是该命令输出的示例:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   20G  0 disk 
└─xvda1 202:1    0   20G  0 part /
xvdf    202:80   0  100G  0 disk

13.    使用以下命令创建挂载点目录,然后将附加的卷附加到救援实例。在下例中,挂载点目录为 /test

$ sudo su
$ mkdir /test
$ mount /dev/xvdf1 /test
$ df -h
$ cd /test

14.    查找系统日志和与身份验证相关的日志中的错误,这些错误带有您尝试访问的时间戳。

Amazon Linux、RHEL 和 CentOS

$ sudo cat /test/var/log/messages

Amazon Linux、RHEL、CentOS(与身份验证有关的问题)

$ sudo cat /test/var/log/secure

Ubuntu、Debian(系统日志)

$ sudo cat /test/var/log/syslog

Ubuntu、Debian(身份验证相关问题)

$ sudo cat /test/var/log/auth.log

15.    在查看配置并解决任何错误之后,请卸载 EBS 根卷并从救援实例中分离。

$ umount /test

16.    将卷附加到原始实例。设备名称为 /dev/xvda


这篇文章对您有帮助吗?


您是否需要账单或技术支持?