Intro to SSH for relative newbies
I have an app running on an Amazon EC2 instance, and it requires an SSH key to access it. Previously, I had to access it by navigating to the folder containing my private key pem file, then runningssh -p 2222 -i private_key.pem -A ubuntu@www.example.com
.Let’s break this down a bit.
-p 2222
- the port that my server runs on-i private_key.pem
- use an Identity File (SSH key) and specify the name-A
- use ForwardAgent to allow my public keys to pass through to the AWS server (important if I want to be able to access Github or some other service while SSH-ed into the server)ubuntu@www.example.com
- username (ubuntu
) and server HostName (www.example.com
)
~/.bash_aliases
alias my-server-ssh="cd ~ && ssh -p 2222 -i private_key.pem -A ubuntu@www.example.com"
This lets me simply run
my-server-ssh
from whatever directory I’m in on the terminal and automatically login to my server. However, once I have a couple more servers to juggle, it starts to get troublesome keeping track of these things. It’s also problematic if I want to use a tool like Capistrano for deployment.Here’s where setting up the
~/.ssh/config
file comes in handy. I opened this file in my text editor, and entered this info:
Host my-server
HostName www.example.com
Port 2222
User ubuntu
IdentityFile "~/.ssh/private_key.pem"
ForwardAgent yes
Once I save, I can now use my computer’s built in SSH manager to access my server by running the command
ssh my-server
. Then, in a tool like Capistrano, I can plug this line into my config file:
server 'my-server', roles: %w{app web}
It will read my
~/.ssh/config
file, find the configuration for host my-server
and SSH in.–
Big ups to Nerderati for the helpful explanation on SSH config.