AWS EC2 Linux用户密钥丢失恢复

前言

同事误操作删除了一台AWS EC2 Linux实例ec2-user用户目录下的.ssh/authorized_keys文件,导致无法使用SSH登录,于是就有了此篇重新配置SSH连接密钥的记录。该方法需要有AWS EC2控制台中对应操作的权限,适用于本地连接私钥丢失或远程服务器保存的密钥丢失的情况。

解决方法

首先,需要登录到AWS EC2控制台页面,按以下步骤生成新的密钥对并将实例的根设备卷附加到一个临时实例上。

  1. 在EC2控制台的Network & Security页面创建新的密钥对。若是服务器丢失authorized_keys而非本地丢失密钥文件,可以不生成新的密钥对,也可生成新的密钥对使用。

  2. 找到对应EC2实例Storage(存储)选项卡中Root device name(根设备名称),记录设备名称(例如/dev/sda1/dev/xvda)并在Block devices下找到对应Volume ID(卷ID)。

  3. 在EC2控制台中停止原始实例(Stop instance)。

  4. 创建一个新的临时实例,并选择在第一步中创建的密钥对作为连接的密钥对(若是服务器端密钥丢失,此处可使用原密钥对)。若在同一区域下有其它现存的实例可以使用,可以选择不创建新实例,在使用不同的密钥对的情况下,在第9步中操作将有所不同,不再需要复制实例中的密钥公钥,而是根据密钥私钥生成对应的公钥,生成方法可参考下文。

  5. 将原始实例的根设备卷从原始实例中分离(Detach Volume),在等待其状态变为available后附加到临时实例上(Attach Volume),并记下附加时设置的设备名称(例如/dev/xvdf)。

执行完以上步骤后,需要通过SSH连接到临时实例上进行后续的操作:

  1. 通过lsblk命令确定卷是否已经分区,已分区的卷将带有part类型的分区。如下面示例中的vxda设备带有分区vxda1,而vxdg设备没有进行分区。若卷已分区,在下面的步骤中进行挂载时将需要挂载对应的分区(如分区/dev/xvdf1),否则则需要挂载原始设备(如设备/dev/vxdg)。

    $ lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值