为什么 AWS 控制台 UI 仍然引用我已删除的密钥对?
Why does the AWS console UI still reference a key pair I have deleted?
如果我单击我的 EC2 实例的 "Connect" 按钮,步骤 #2 将引用不再存在的密钥对的私钥。
2) Locate your private key file (something.pem).
但是关联的密钥对不存在,因为我在AWS控制台删除了它。这只是 AWS 控制台中的一个 UI 问题,还是我误解了密钥的管理方式?
我不确定你是不是在谈论这个,但是如果你删除了你的私钥,你将无法访问你的实例。
Amazon EC2 doesn't keep a copy of your private key; therefore, if you
lose a private key, there is no way to recover it. If you lose the
private key for an instance store-backed instance, you can't access
the instance; you should terminate the instance and launch another
instance using a new key pair. If you lose the private key for an
EBS-backed Linux instance, you can regain access to your instance. For
more information, see Connecting to Your Linux Instance if You Lose
Your Private Key.
https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/ec2-key-pairs.html
"Connect"UI中的命令引用实例启动时指定的密钥对名称。该名称与您在实例的 "Description" 选项卡中看到的密钥对名称匹配。这是无法改变的。即使您在 AWS 控制台中删除了密钥对,您启动的实例仍然与该密钥对关联。
就我而言,ISP 问题导致我的 IP 地址临时更改,因此我的新 IP 地址不再与我的安全组中的 IP 地址匹配。在我最初的调试工作中,我采取了各种可能导致我的私钥不再有效的方法,因此当我更正我的安全组中的 IP 地址时,我仍然被锁在门外。 (然后我继续删除了密钥对,但仍然看到它在 AWS UI 中被引用,正如我的问题中所解释的那样。)
幸运的是,我的是 EBS-backed Linux 实例,所以我能够恢复,就像这样:
- 创建我的实例的 AMI。
- 根据我的 AMI 创建一个新实例。这使我不必重建整个服务器和 re-deploy 我的应用程序。当您基于旧实例的 AMI 创建新实例时,这是您将新密钥与实例相关联的更改。 AWS UI 已经足够清楚了。
- 将我的弹性 IP 与旧实例分离。
- 将我的弹性 IP 与新实例相关联。
然后我还有一个影响 SSH 访问的遗留问题,其他人可能不会 运行 进入:我本地 known_hosts 文件中的 RSA 密钥现在是错误的。当我尝试通过 SSH 连接到 AWS 时,我在终端中看到一个错误,该错误引用了我的 known_hosts 中的特定行,这就是问题所在。这是错误消息的重要部分:
Offending RSA Key in /some/path/to/known_hosts:3
最后的那个数字告诉你 known_hosts 中的哪一行是问题所在,在我的例子中,我只是删除了那一行,然后能够再次通过 SSH 连接到 AWS,我的新实例也一样和旧的一样。
如果我单击我的 EC2 实例的 "Connect" 按钮,步骤 #2 将引用不再存在的密钥对的私钥。
2) Locate your private key file (something.pem).
但是关联的密钥对不存在,因为我在AWS控制台删除了它。这只是 AWS 控制台中的一个 UI 问题,还是我误解了密钥的管理方式?
我不确定你是不是在谈论这个,但是如果你删除了你的私钥,你将无法访问你的实例。
Amazon EC2 doesn't keep a copy of your private key; therefore, if you lose a private key, there is no way to recover it. If you lose the private key for an instance store-backed instance, you can't access the instance; you should terminate the instance and launch another instance using a new key pair. If you lose the private key for an EBS-backed Linux instance, you can regain access to your instance. For more information, see Connecting to Your Linux Instance if You Lose Your Private Key.
https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/ec2-key-pairs.html
"Connect"UI中的命令引用实例启动时指定的密钥对名称。该名称与您在实例的 "Description" 选项卡中看到的密钥对名称匹配。这是无法改变的。即使您在 AWS 控制台中删除了密钥对,您启动的实例仍然与该密钥对关联。
就我而言,ISP 问题导致我的 IP 地址临时更改,因此我的新 IP 地址不再与我的安全组中的 IP 地址匹配。在我最初的调试工作中,我采取了各种可能导致我的私钥不再有效的方法,因此当我更正我的安全组中的 IP 地址时,我仍然被锁在门外。 (然后我继续删除了密钥对,但仍然看到它在 AWS UI 中被引用,正如我的问题中所解释的那样。)
幸运的是,我的是 EBS-backed Linux 实例,所以我能够恢复,就像这样:
- 创建我的实例的 AMI。
- 根据我的 AMI 创建一个新实例。这使我不必重建整个服务器和 re-deploy 我的应用程序。当您基于旧实例的 AMI 创建新实例时,这是您将新密钥与实例相关联的更改。 AWS UI 已经足够清楚了。
- 将我的弹性 IP 与旧实例分离。
- 将我的弹性 IP 与新实例相关联。
然后我还有一个影响 SSH 访问的遗留问题,其他人可能不会 运行 进入:我本地 known_hosts 文件中的 RSA 密钥现在是错误的。当我尝试通过 SSH 连接到 AWS 时,我在终端中看到一个错误,该错误引用了我的 known_hosts 中的特定行,这就是问题所在。这是错误消息的重要部分:
Offending RSA Key in /some/path/to/known_hosts:3
最后的那个数字告诉你 known_hosts 中的哪一行是问题所在,在我的例子中,我只是删除了那一行,然后能够再次通过 SSH 连接到 AWS,我的新实例也一样和旧的一样。