Skip to content

Instantly share code, notes, and snippets.

@sunapi386
Created February 7, 2018 19:58
Show Gist options
  • Save sunapi386/feb695f099457ece669292ac74ab25e0 to your computer and use it in GitHub Desktop.
Save sunapi386/feb695f099457ece669292ac74ab25e0 to your computer and use it in GitHub Desktop.
How to recover locked out AWS EC2 ssh machine

One time I accidentally messed with the /etc/passwd and locked myself out of being able to SSH into the machine. Since this is a remote machine in AWS I had no way of doing what I'd normally do. Which is attaching a keyboard and monitor and fixing this manually.

To fix, use the AWS EC2 Management page to:

  • spin up a new instance of vanilla ubuntu EC2 (let's call it David)
  • shutdown the locked machine (let's call it Goliath)
  • unmount Goliath's volume
  • attach the volume to David

Then follow this guide: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

Summary of what I did from this guide:

lsblk
sudo file -s /dev/xvdf # MBR (not data type)
sudo file -s /dev/xvdf1 # ext4
sudo mkdir mount_folder
sudo mount /dev/xvdf1 mount_folder # ext4 mounted
cd mount_folder
# undo crazy setting (see Note #1)
cd .. # to unmount
sudo umount /dev/xvdf1
# Note #2

Note #1: For me I tried to modify /etc/ssh/sshd_config to allow one more user to login. But this made me unable to login after. So I removed the offending line.

Note #2: now in the Volume webpage

  • undo attach to David (Volumes tab)
  • mount to Goliath (Volumes tab: attach as EBS path /dev/sda1)
  • boot up Goliath (Instance tab)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment