Recently I had the need to configure ssh access for some AWS EC2 machines. One annoying element of EC2 machines is that they default to user ec2-user, which is easy to forget.

Public routable EC2 instances hostnames is in the form of: ec2-<IP>.compute-1.amazonaws.com. Due to this is easy to create a SSH config file entry to set the default user to ec2-user for these hostnames:

Host *.amazonaws.com
	User ec2-user

From this point onward all connections to instances whose hostname ends in .amazonaws.com will default to the correct value.

Screenshot of a terminal with working login to an EC2 instance with correct default user

What if I have a non-publicly routable instance? Depending on the hostname, you may be able to slightly change the configuration above to suit your needs. If you’re using IP addresses though, you should either do it manually for each host or find a way to automating the manual process.