当您有权访问 EC2 实例时更改 EC2 pem 文件密钥对

Posted

技术标签:

【中文标题】当您有权访问 EC2 实例时更改 EC2 pem 文件密钥对【英文标题】:Changing EC2 pem file key pair when you have access to the EC2 instance 【发布时间】:2019-05-07 08:07:28 【问题描述】:

感谢您的宝贵时间。

我有一个 EC2 实例,但出于安全原因,我需要更改 .ssh/authorized_keys 中关联的 pem 文件。我知道公共 pem 文件进入了 authorized_keys。

我不想将 ec2 实例的卷挂载到新的卷上。我正在考虑作为最后一个选择,因为我确实可以访问 EC2 实例。

如何做到这一点?

我尝试过: 这篇帖子Change key pair for ec2 instance Pat Mcb 的回答,但没有运气。

下载 AWS pem 后运行此命令。

ssh-keygen -f YOURKEY.pem -y 然后将输出转储到 授权密钥。

或将 pem 文件复制到您的 AWS 实例并执行以下命令

chmod 600 YOURKEY.pem 然后

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys

但这对我不起作用。如果我完全按照它下载 aws 密钥对密钥,并按照说明在 ssh 进入实例时复制密钥,当我执行 ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys 它要求密码(无需输入)

我正在做的事情如下。 我创建了一个新密钥 ssh-keygen newpem.pem

我将 .pub 文件复制到 .ssh/authorized_keys 中

有人可以解释我做错了什么吗? 请注意,authorized_keys 文件具有正确的权限。

【问题讨论】:

与其描述您所做的事情,不如通过从您的终端(客户端和服务器)复制文本并复制到问题中的code 块中来显示确切的步骤。您还应该从客户端运行 ssh -v 以准确显示正在发生的事情(当然,您应该编辑此输出中的所有用户名或主机名)。 您尝试过docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 中列出的步骤吗? 【参考方案1】:

以下是在 AWS EC2 上更改密钥对的步骤。

    登录 AWS 控制台。转到网络和安全 >> 密钥对。

    提供您的密钥对 (mykeypair) 和密钥类型 (RSA) 的名称以及 Private 密钥格式 (.pem)。并单击创建密钥对。它会要求你 在本地机器上下载 .pem 文件。保存并记住 位置。

    登录您的 EC2 实例并转到 .ssh. 位置。创建一个名为的新文件 (mykeypair.pem) 并粘贴我们在第 2 步中下载的文件中的内容

    运行命令:sudo chmod 600 mykeypair.pem

    运行命令:ssh-keygen -f mykeypair.pem -y 会生成一些 内容。复制该内容。打开名为 autherized_keys 的文件,然后 删除其中的所有内容。

    粘贴我们在上一步中生成的复制内容。输入空格后最后还要输入你的文件名(mykeypair)。

    重启您的实例。转到puttygen并生成.ppk文件 使用您从密钥对下载的 pem 文件。您将能够使用从 putty 新生成的 .ppk 登录您的 ec2。

【讨论】:

【参考方案2】:

您甚至不需要执行所有这些操作,只需注意 AWS EC2 的几件事,您就可以获得默认用户的私钥。比如 ec2-user /ubuntu 等。

你做对了

ssh-keygen -t rsa -C "your_email@example.com"

如果它要求输入任何释义,请将其留空。

只需按下即可接受默认位置和文件名。如果 .ssh 目录不存在,系统会为您创建一个。

如果提示密码短语,请输入并重新输入

你现在有那把钥匙了。

复制那个键

登录到您的 Ec2 服务器。

须藤苏

vim ~/.ssh/authorized_keys

粘贴密钥。

:wq!

您会在那里看到一个密钥,将其复制并作为备份保存在某处。

现在将新生成的密钥粘贴到该文件中

并保存文件。

现在要注意的最后一步是权限,所以运行以下命令。

sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

现在你可以走了。

【讨论】:

太好了,非常感谢!这对我有用!您可以更改 rsa 密钥的名称和位置,它仍然有效。请注意在 root 和用户 (ec2-user/ubuntu) 中复制 authorized_keys 文件作为备份。另外,请在控制台上至少打开两个连接,以防您需要恢复。 我已经多次将公钥复制到服务器,但我正在运行 chmod 命令。非常感谢!【参考方案3】:

似乎您想弃用旧密钥并改用新密钥。这些步骤可能会对您有所帮助 -

    使用 aws 控制台创建新的密钥对并将其下载到您的系统中。

    使用命令 - "ssh-keygen -y"

    从私钥 (.pem) 文件中检索公钥

    使用旧密钥通过 SSH 连接到实例。

    在您有权访问实例后,将您在第 2 步中获得的公钥添加到 "~/.ssh/authorized_keys" 文件中,然后保存文件。

    退出实例,然后尝试使用新密钥访问实例。

希望对您有所帮助。谢谢!

【讨论】:

太好了,非常感谢。此解决方案可能仍需要 Prabhat Singh 提到的权限。 我的错。解决方案不需要权限。完美的。非常感谢。

以上是关于当您有权访问 EC2 实例时更改 EC2 pem 文件密钥对的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 PEM 文件以 root 用户身份连接到 ec2 实例?

使用不同的 SSH 密钥部署私有 EC2 实例(例如 Ec2.pem)和堡垒主机(例如 BastionKey.pem) - AWS VPC

使用 pem 文件访问 AWS ssh 集群

如何在没有 PEM 密钥的情况下通过 ssh 进入 EC2 实例?

如何为 Amazon EC2 实例设置 SSH 访问?

AWS SSH 访问密钥生成过程并安装在 EC2 上