为什么我不能使用辅助 IP 地址连接到我的 Amazon EC2 Linux 实例?

3 分钟阅读
0

我想了解为什么当我使用辅助 IP 地址时,无法连接到我的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例。

概述

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

如果您的实例满足这些先决条件,请使用以下步骤通过 SSH 解决连接问题:

  1. 在开启详细消息的情况下通过 SSH 连接,识别错误。
  2. 查看系统日志查找错误。
  3. 查看网络配置文件。

**注意:**最好要保留实例和数据的备份。在排除故障之前,请创建 AMI 或为 Amazon Elastic Block Store(Amazon EBS)创建快照

解决方案

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。此外,在开始之前,请查看通用连接先决条件

在开启详细消息的情况下通过 SSH 连接,以识别错误

有关详细说明,请参阅如何排查使用 SSH 连接到我的 Amazon EC2 Linux 实例的问题?

查看网络配置文件和系统日志来查找错误

如果问题仍未解决,请查看实例的系统日志。使用以下方法之一访问日志并对您的实例进行进一步故障排除。

方法 1: 使用主 IP 地址连接到您的实例

1.使用主 IP 地址通过 SSH 访问您的实例。获得访问权限后,请检查辅助网络接口的网络状态和配置。为此,请运行以下命令。

检查 ifconfig 的输出,并确保您的实例的辅助网络接口已启动:

$ ifconfig -a

或者运行以下命令:

$ ip a show < network interface name> up
Example Command:
$ ip a show eth1 up

**注意:**在本示例中,辅助网络接口为 eth1。将其替换为您的辅助网络接口的名称。

2.查看辅助网络接口配置文件并验证所有参数。例如,您可以检查任何 MAC 地址、辅助 IP 地址和辅助接口名称。如果您发现任何差异,请编辑文件并将其更新为正确的详细信息。运行以下命令之一:

Linux、RHEL、CentOS:

$ sudo cat /etc/sysconfig/network-scripts/ifcfg-eth1

Ubuntu

sudo cat /etc/network/interfaces.d/51-eth1.cfg  
or  
sudo cat /etc/netplan/51-eth1.yaml

3.运行以下命令以重新启动网络服务:

$ sudo service network restart

如果问题仍未解决,请查看您尝试访问时间段的系统日志和与身份验证相关的日志。

方法 2: 使用 Amazon EC2 Serial Console 访问您的实例

如果您无法通过 SSH 使用主 IP 地址访问您的实例,请使用适用于 Linux 的 Amazon EC2 Serial Console。Amazon EC2 Serial Console 可用于对支持的基于 Nitro 的实例类型和裸机实例类型进行故障排除。在使用 Amazon EC2 Serial Console 之前,请查看适用于 Linux 实例的 Amazon EC2 Serial Console配置对 Amazon EC2 Serial Console 的访问权限

方法 3: 使用救援实例访问网络配置文件和日志

**重要事项:**在使用此方法之前,请注意以下限制:

使用以下步骤通过救援实例访问网络配置文件:

1.打开 Amazon EC2 控制台

2.从导航窗格中选择实例,然后选择想要连接到的实例。

3.选择实例状态,然后选择停止实例

4.选择停止,然后记下实例 ID

注意:如果您不使用新的 Amazon EC2 体验,请选择要连接的实例。选择操作实例状态停止,然后再次选择停止

5.从已停止的实例上分离根 EBS 卷。记下根 EBS 卷的设备名称。调查完成后,在重新连接卷时,需要提供设备名称。

6.在与原始实例相同的可用区(AZ)中启动新 EC2 实例。该新实例将成为您的救援实例。

**注意:**最佳实践是使用 Amazon Linux 2 实例作为救援实例。这将不允许救援实例从连接的 EBS 卷启动,因为 EBS 卷的 UUID 或名称相同。

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

**注意:**如果您的实例有 AWS Marketplace 代码并且不是 Amazon Linux 实例,请在连接根 EBS 卷之前停止救援实例。例如,如果您从官方 RHEL 或 CentOS AMI 启动实例,则该实例可能有 AWS Marketplace 代码。

8.选择操作,然后选择连接卷

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

10.选择实例状态,然后选择启动实例

注意:如果您没有使用新的 Amazon EC2 体验,请选择要连接的实例,然后选择操作。选择实例状态,然后选择启动

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

**注意:**挂载设备 /dev/xvdf1 时,如果您遇到任何与重复 UUID 相关的问题,请修改之前的命令并再次运行该命令:

$ mount -o nouuid /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.查看本文方法 1 中给出的辅助网络接口文件。检查配置并解决所有错误后,请卸载 EBS 根卷,然后将其与救援实例分离。

$ umount /test

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

相关信息

使用 SSH 客户端连接到您的 Linux 实例

AWS 官方
AWS 官方已更新 7 个月前