One way I get locked out while developing is by changing the permissions on any of the directories or files associated with the keys used by `ssh`. This happens to me when I untar files or run some installation script while initializing the machine that touches the `ec2-user` account. Make sure the permissions are like: 1> ls -ld $HOME $HOME/.ssh drwx------ 15 ec2-user ec2-user 4096 Aug 1 13:15 /home/ec2-user/ drwx------ 2 ec2-user ec2-user 4096 Jun 10 11:18 /home/ec2-user/.ssh/ 2> ls -l $HOME/.ssh/authorized_keys -rw------- 1 ec2-user ec2-user 385 Jun 10 11:18 /home/ec2-user/.ssh/authorized_keys If not, and you are logged in as `ec2-user`, you can change them with sudo chown ec2-user:ec2-user ~ec2-user ~ec2-user/.ssh ~ec2-user/.ssh/authorized_keys chmod 700 ~ec2-user ~ec2-user/.ssh chmod 600 ~ec2-user/.ssh/authorized_keys To protect myself against my own mistakes, I create a new user and copy the `ec2-user` key over. That account is used as a backup and not part of any script. Once I tested everything, I remove the account.