Ubuntu AWS EC2忘记了密码,无法使用SSH
我有一个ec2 ubuntu实例。现在我忘记了用户的密码。不幸的是,我还丢失了用于putty的.pem文件和.ppk文件。发现很难进去。我想升级我的一些代码 我已经浏览了以下链接,给出了一些建议 我还有一个附加约束,即系统的专用I/p地址不应更改。我正在使用的一个软件使用系统专用I/p地址作为许可证。目前我的实例只有一个卷,是根卷 基于上面提到的链接,我需要分离我的卷并连接到其他实例。进行访问所需的更改。以及重新附着到原始实例。 但是,由于本例中的卷是根卷,因此我需要停止实例,然后将其分离。如果我的理解是正确的,这可能会导致实例的私有i/p地址发生更改 想知道有什么可以做的吗?或者按照链接中提到的步骤是唯一的方法,然后在实例重新启动时更新s/w许可证 谢谢我的建议是:Ubuntu AWS EC2忘记了密码,无法使用SSH,ubuntu,amazon-web-services,amazon-ec2,Ubuntu,Amazon Web Services,Amazon Ec2,我有一个ec2 ubuntu实例。现在我忘记了用户的密码。不幸的是,我还丢失了用于putty的.pem文件和.ppk文件。发现很难进去。我想升级我的一些代码 我已经浏览了以下链接,给出了一些建议 我还有一个附加约束,即系统的专用I/p地址不应更改。我正在使用的一个软件使用系统专用I/p地址作为许可证。目前我的实例只有一个卷,是根卷 基于上面提到的链接,我需要分离我的卷并连接到其他实例。进行访问所需的更改。以及重新附着到原始实例。 但是,由于本例中的卷是根卷,因此我需要停止实例,然后将其分
我认为你有两个选择:
- 生成新的密钥对(如果匆忙,使用或)
- 将生成的
公钥插入下面的脚本中ssh rsa…
- 停止实例
- 将实例用户数据设置为此cloud init脚本
- 开始实例
- 测试连接
- 再次停止实例并删除用户数据(您可能会忘记执行此操作)
- 在cloud init脚本中,空格似乎很重要,不要急于格式化,例如在
#cloud config
- 我每一次都会摆弄
,但从未让它工作过,只是浪费了很多时间cloud init
- 您可以使用
而不是>
来附加密钥,而不是覆盖
文件。但是如果你在以前的尝试中把内容弄糟了,你永远也不会知道为什么它不起作用授权的\u密钥
- 您可以更改脚本以推送任何用户的密钥,例如,对于默认的EC2
user:ubuntu
echo'ssh rsa…>/home/ubuntu/.ssh/authorized_keys
- 当心已安装的密钥轮换代理,例如,它可能会覆盖
文件。对于JumpCloud,您可以将脚本更改为写入授权密钥
(JumpCloud包含该文件的内容)echo'ssh rsa…'>/home/ubuntu/.ssh/authorized_keys.jcorig
- Ubuntu必须配置为允许SSH连接(应为默认值)
- SSH端口需要打开(Ubuntu防火墙)
- 实例的安全组(AWS防火墙)需要允许SSH端口和您的IP
- 整个过程可以自动化(停止、设置用户数据、启动、连接和修复、停止、清除用户数据、启动)。有趣的AWS命令是(Java客户端):
m_ec2.modifyInstanceAttribute(新modifyInstanceAttribute().withInstanceId(“”)。withUserData(userdataBase64));
您使用的是静态IP吗?虽然我使用的是弹性IP,但我没有为所讨论的实例编写任何静态I/p。我没有探讨这种可能性,因为我觉得只有在VPC设置中才有可能。VPC听起来是一个好主意,下次您获得许可证时,您可以保留相同的私有IP地址。我在这里面临一个问题。我使用新密钥对启动了新实例。在新实例中,我将原始实例的卷装载到dir/volold。我在/vol-old/home/ubuntu/.ssh/authorized\u-keys\u-bkup中重命名authorized\u-keys文件。然后我将authorized_-keys文件从/home/ubuntu/.ssh/authorized_-keys复制到/vol-old/home/ubuntu/.ssh/authorized_-keys。然后我分离了卷并重新连接到原始实例。然而,当我尝试使用新的密钥详细信息访问原始实例时,我得到“网络错误:连接被拒绝”。有什么建议或提示需要进一步检查吗?谢谢大家的建议。最后我们要解决的问题是:由于我们的主要问题是i/p许可,我们请求为我们的场景提供补丁(因为我们无法在VPC上重新启动相同的实例)。然后创建VPC并在VPC中启动新实例。有补丁的老问题实例仍然在VPC之外运行。好帖子。我的变体也发布在这里。
#cloud-config
bootcmd:
- echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys
m_ec2.modifyInstanceAttribute(new ModifyInstanceAttributeRequest().withInstanceId("<instance-id>").withUserData(userdataBase64));