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

上次更新时间:2021 年 1 月 4日

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

简短描述

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

  1. 设置代理转发以进行故障排查,对以下各项之间的 SSH 连接进行单独排查:
    您的本地计算机和堡垒主机。
    堡垒主机和您的 EC2 实例。
  2. 按照 如何排查使用 SSH 连接我的 Amazon EC2 Linux 实例时遇到的问题? 中的步骤,对您的本地计算机与堡垒主机、堡垒主机与 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 或类似方法。

3.    连接到堡垒主机后,运行以下命令以使用开启详细消息的 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

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

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

  • 请验证堡垒主机的私有密钥是否已正确添加到您的本地计算机的 SSH 代理上。此过程在步骤 1 中显示。
  • 请验证 ssh-add-L 返回五个及以内的密钥。

如果您仍无法连接到堡垒主机,请参阅步骤 2 如何排查使用 SSH 连接我的 Amazon EC2 Linux 实例时遇到的问题?

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

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

  • 请验证您的 EC2 实例私有密钥是否已正确添加到您的本地计算机上的 SSH 代理上。如果该密钥与您的堡垒主机的私有密钥不同,您可能需要检查此项。
  • 请验证 ssh-add-L 返回五个及以内的密钥。

如果您仍无法从堡垒主机连接到您的 EC2 实例,请使用 SSH 客户端的输出消息进行故障排查。有关更多信息,请参阅步骤 2 如何排查使用 SSH 连接 Amazon EC2 Linux 实例时遇到的问题?


这篇文章对您有帮助吗?


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