如何对通过堡垒主机使用 SSH 连接访问我的 EC2 实例进行故障排查?

上次更新时间:2021 年 10 月 14 日

我在通过堡垒主机使用 SSH 连接连接我的 Amazon Elastic Compute Cloud(Amazon EC2)实例时遇到问题。我应该如何排查此问题?

简短描述

要对使用堡垒主机通过 SSH 连接到 EC2 实例进行故障排查,请执行以下操作:

  1. 设置 SSH 代理转发以从本地计算机登录堡垒主机。
  2. 在启用详细消息收发的情况下,从堡垒主机连接到 EC2 实例。
  3. 使用来自 SSH 客户端的输出消息来识别问题并进行故障排查。请先对从本地计算机到堡垒主机的连接进行故障排查。然后再对从堡垒主机到 EC2 实例的连接进行故障排查。

解决方法

设置 SSH 代理转发以从本地计算机登录堡垒主机

1.    添加一个或多个 EC2 实例和堡垒主机私有密钥到您的本地计算机的 ssh-agent上。在以下示例命令中,将 private-key.pem 替换为您的私有密钥名称。

$ ssh-add private-key.pem

    运行以下命令以验证密钥是否可用于 ssh-agent:

$ ssh-add -L

2.    运行以下命令,以使用启用详细消息收发的 -A 选项来连接堡垒主机。在以下示例命令中,将 ec2-user 替换为您的用户名。将 192.0.2.0 替换为适合您的堡垒主机的公有 IP 地址。您还可以使用公有 DNS 条目代替公有 IP 地址。

$ ssh -v –A ec2-user@192.0.2.0

重要提示:此 -A 选项将启用 ssh-agent 转发。代理转发应仅用于故障排查。转发将启动本地 ssh-agent 以响应公有密钥挑战,包括当您从堡垒主机连接到 EC2 实例时。设置代理转发时,一个套接字文件将在堡垒主机上创建。套接字文件充当将密钥转发给 EC2 实例的机制。堡垒主机上具有修改文件功能的其他用户可使用此密钥进行身份验证。定期使用堡垒主机连接实例时(故障排查外),请使用 ProxyCommand 或类似方法。

从堡垒主机连接到您的 EC2 实例,并启用详细消息收发

连接到堡垒主机后,运行以下命令以使用启用详细消息收发的 SSH 来连接您的 EC2 实例。在以下示例命令中,将 ec2-user 替换为您的用户名。将 192.0.2.0 替换为适合您的堡垒主机的公有 IP 地址。您还可以使用公有 DNS 条目代替公有 IP 地址。

$ ssh -v ec2-user@192.0.2.0

注意:在前两个命令中您无需明确提供密钥。ssh-agent 在密钥成功之前按顺序尝试代理中加载的所有密钥。实例在连接尝试失败五次后终止连接。因此,请确保代理具有五个及以内的密钥。每个管理员都应该有一个密钥,这样,对于大多数部署来说,这将几乎不成问题。有关如何在 ssh-agent 中管理密钥的详细信息,请运行命令 man ssh-agent

对从本地计算机到堡垒主机的连接进行故障排查

如果您从本地计算机连接到堡垒主机时遇到问题,请执行以下操作:

  • 请验证堡垒主机的私有密钥是否已正确添加到您的本地计算机的 SSH 代理上。此过程在步骤 1 中显示。
  • 请验证 ssh-add-L 返回五个及以内的密钥。
  • 如果仍然无法连接到堡垒主机,则使用从 SSH 客户端详细消息收发中获取的输出消息来识别错误消息。根据收到的错误消息,请参阅步骤 2 中的“如何对使用 SSH 连接到 Amazon EC2 Linux 实例时出现的问题进行故障排查?”以对问题进行故障排查。

从堡垒主机连接到 EC2 实例时的故障排查

如果您在从堡垒主机连接到 EC2 实例时遇到问题,请执行以下操作:

  • 请验证您的 EC2 实例私有密钥是否已正确添加到您的本地计算机上的 SSH 代理上。如果该密钥与您的堡垒主机的私有密钥不同,您可能需要检查此项。
  • 请验证 ssh-add-L 返回五个及以内的密钥。
  • 如果仍然无法连接到堡垒主机,则使用从 SSH 客户端详细消息收发中获取的输出消息来识别错误消息。根据收到的错误消息,请参阅步骤 2 中的“如何对使用 SSH 连接到 Amazon EC2 Linux 实例时出现的问题进行故障排查?”以对问题进行故障排查。

这篇文章对您有帮助吗?


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