Meta

Month: December 2016

On my laptop running Ubuntu 14.04, I usually attach a secondary monitor to it while working. I notice that on disconnecting the secondary monitor, some windows tend to go offscreen making it impossible to use them. Pressing the usual Alt + Tab plus clicking the window doesn’t bring it back. So here is a hack for bring back all offscreen windows which I found on Stack Overflow.

Here’s a tutorial that talks about setting up login via SSH keys on Ubuntu servers as well as how to log in to such servers from Mac and Windows clients. This tutorial builds on DigitalOcean’s excellent tutorial (How To Set Up SSH Keys) [1].

About SSH Keys

SSH keys provide a more secure way of logging into a virtual private server with SSH than using a password alone. While a password can eventually be cracked with a brute force attack, SSH keys are nearly impossible to decipher by brute force alone. Generating a key pair provides you with two long string of characters: a public and a private key. You can place the public key on any server, and then unlock it by connecting to it with a client that already has the private key. When the two match up, the system unlocks without the need for a password. You can increase security even more by protecting the private key with a passphrase.

Step One—Create the RSA Key Pair
The first step is to create the key pair on the client machine (there is a good chance that this will just be your computer):

ssh-keygen -t rsa

Step Two—Store the Keys and Passphrase
Once you have entered the Gen Key command, you will get a few more questions:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):
You can press enter here, saving the file to the user home (in this case, my example user is called demo).

Enter passphrase (empty for no passphrase):
It’s up to you whether you want to use a passphrase. Entering a passphrase does have its benefits: the security of a key, no matter how encrypted, still depends on the fact that it is not visible to anyone else. Should a passphrase-protected private key fall into an unauthorized users possession, they will be unable to log in to its associated accounts until they figure out the passphrase, buying the hacked user some extra time. The only downside, of course, to having a passphrase, is then having to type it in each time you use the Key Pair.

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Note: if you create your private key in a non-standard location, you will want to copy it to the remote server using the ssh-copy-id command with the i flag as follows:

ssh-copy-id -i ~/.ssh/your-id-rsa-file user@123.45.67.222

Now you can go ahead and log into user@12.34.56.78 and you will not be prompted for a password. However, if you set a passphrase, you will be asked to enter the passphrase at that time (and whenever else you log in in the future).

Logging in from Various Clients

Mac

Note: if you are logging in from a Mac client, you may want to store your private key credentials in the keychain so that you don’t get asked for a password henceforth. To do this, run the following command:

ssh-add -K ~/.ssh/you-id-rsa-key

Then entire your passphrase when prompted (if you set one earlier).

Windows

If you are logging from a Windows machine, you may want to use a client like Putty. If you try to use your OpenSSH key directly with Putty, you may run into an error like “Unable to Use key file /Path/to/your/id-rsa-file (OpenSSH SSH-2 private key)”. To fix this, you will need to convert your private key to one that Putty can use. Puttygen is a software you can use for this. Download Puttygen, run the program, go to Conversions > Import key, find your private key and click Open, then click Save private key. This will generate a .ppk file which you can use with Putty. You may find more details in CNX Soft’s excellent tutorial [2].

Optional Step Four—Disable the Password for Root Login
Once you have copied your SSH keys unto your server and ensured that you can log in with the SSH keys alone, you can go ahead and restrict the root login to only be permitted via SSH keys.

In order to do this, open up the SSH config file:

sudo vim /etc/ssh/sshd_config

Within that file, find the line that includes PermitRootLogin and modify it to ensure that users can only connect with their SSH key:

PermitRootLogin without-password

Put the changes into effect:

reload ssh

References

1. How To Set Up SSH Keys. https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2. [04/12/2016].

2. How To Use Putty with an SSH Private Key Generated by OpenSSH. http://www.cnx-software.com/2012/07/20/how-use-putty-with-an-ssh-private-key-generated-by-openssh/. [04/12/2016].