This brief tutorial is going to show you how to easily enable password-less SSH logon when using Ubuntu as your server. With this setup, only workstations that have the correct matching key pair (private and public) will be allowed to logon to the SSH server. Without the key paring, access will always be denied.
Most SSH setup allow for password logon. A user connects to the SSH and he/she gets prompted to enter his/her username and password. If the combination is correct, access is granted.
Well, if you want to enable a more secured option, you can disable password-logon for SSH altogether and only allow logon using an encryption key. When using encryption keys option, the client computer generates a private and public key pair.
The client then must upload it public key to the SSH server authorized_key file. Before access is granted, the server and client computer validate the key pair. If the public key on the server matches the private key submitted via the client, access will be granted.
This is very secure way authenticating to a SSH server and it’s a recommended method if you wish to implement secure logon.
- Enabling Password-less SSH logon
Now before you begin, first install SSH server on the server computer. To do that in Ubuntu, run the commands below
sudo apt-get -y install openssh-server
To start up SSH server, run the commands below in Ubuntu
sudo service ssh start
Or
/etc/init.d/ssh start
- Generating the client encryption key pair
After installing SSH server on the server computer, you can now go and generate the client private and public key pair. To do that, run the commands below
ssh-keygen -t rsa
After running the above commands, you’ll be prompted to complete a series of tasks. The first will be where to save the keys, press Enter to choose the default location which is in a hidden .ssh folder in your home directory.
The next prompt will be to Enter a passphrase
. I personally leave this blank (just press enter) to continue. It will then create the key pair and you’re done.
After generating the keys, you will then need to copy the client’s public key to the SSH server computer or host it wants to create trust relationship with.
Run the commands below to copy the client public key to the server.
ssh-copy-id user@server_ip_address or hostname
After the public key is transferred to the server, you can now go and disable password logon via SSH.
Next, logon to the server and open the configuration file for SSH. To do that, run the commands below.
vi /etc/ssh/sshd_config
Then make sure these lines are uncomment and value are set as shown below.
PubkeyAuthentication yes
AuthorizedKeyFile .ssh/authorized_keys
PasswordAuthentication no
Restart the SSH server and you’re done.
sudo service ssh restart
Or
sudo /etc/init.d/ssh restart
Enjoy!