Setup Public/Private Key

When you connect to a remote server, you're connecting over ssh or scp or a similar protocol. In each case, you may have to provide some authentication credentials to prove you are who you say you are. This can come in the form of a user/password combo, but if you're connecting a lot or if you're trying to setup a non-interactive connection, this can become either really monotonous or really problematic. Public/private keys will come to our rescue, and we'll never need to enter our password again.

> ssh-keygen

You can, but don't need to protect your private key with a passphrase. It is private, after all. The default names are:

  • Private: id_rsa

  • Public: id_rsa.pub

Now you need to share your public key with the remote server:

> scp ~/.ssh/id_rsa.pub myUsername@remoteServer:

The trailing colon will separate your hostname from the destination path and drop it in your default/home directory on the server. Now, get into the remote server for the last time using that antiquated password of yours:

> ssh myUsername@remoteServer

Once here, we need to put the public key in a file that will be used for incoming connections:

> mkdir ~/.ssh
> mv ~/id_rsa.pub ~/.ssh/authorized_keys

And make sure that the permissions are locked down for security reasons:

> cd ~/.ssh
> chmod 700 .
> chmod 600 id_rsa.pub

Jump back to your local box and prep your private key for your next ssh/scp connection:

> eval `ssh-agent`
> ssh-add ~/.ssh/id_rsa

Note that we're adding our private key only. If you had a passphrase on your private key, you'll be prompted for it at this point. Voila! You're next connection to that remote server should not require a password. Try it!:

> ssh myUsername@remoteServer