How to Setup SSH public-key or password-less authentication in Ubuntu

Here’s how to setup public-key (or passwordless) authentication in Ubuntu or any other Linux based operating system that use OpenSSH.

First make sure you’ve remote SSH server running and accepting connection. Then you need to generate ssh key on local server (I prefer RSA). You can enter passphrase for added security, or leave it blank for passwordless authentication.

local:~$ ssh-keygen -t rsa
Enter passphrase (empty for no passphrase):

The command will generate id_rsa and id_rsa.pub files. The files will be save in ~/.ssh/ directory. Then copy id_rsa.pub file to the remote server using SCP. Read How to use SCP on Linux or other UNIX-based Environment for more information about SCP

local:~$ scp id_rsa.pub username@remote.host:~/

Then you have to connect to the remote host and append the id_rsa.pub public key file to the list of “authorized_keys“. Don’t forget to chmod the authorized_keys file and .ssh directory, or OpenSSH won’t work correctly

local:~$ ssh username@remote.host

#now we are on remote server!
remote:~$ cat id_rsa.pub >> ~/.ssh/authorized_keys
remote:~$ chmod 644 ~/.ssh/authorized_keys
remote:~$ chmod 700 ~/.ssh

Make sure you have edited the “/etc/ssh/sshd_config” file to allow Public key authentication and RSA authentication.

#sshd_config file

PermitRootLogin no
...snip...
RSAAuthentication yes
PubkeyAuthentication yes
...snip..

Save and restart sshd server daemon by running the following command.

remote:~$ sudo /etc/init.d/ssh restart

After that, logout from the remote host to test the Public-key authentication


remote:~$ exit
local:~$

Testing the SSH public-key authentication
To test the public-key authentication, simply connect to remote server normally using ssh, and if things have gone smoothly you’ll be prompted to enter your passphrase, instead of password.


local:~$ ssh username@remote.host
Enter passphrase for key '/home/username/.ssh/id_rsa':

Note that you will not be prompted to enter passphrase/password if you’ve generated a key with “blank passphrase“, effectively making your login “passwordless”. For added security, it is advised that you disable normal interactive-keyboard password option and rely fully on public-key authentication by changing sshd_config line from:

PasswordAuthentication yes

to


PasswordAuthentication no

p/s: this tutorial was adapted from Shortest passwordless ssh tutorial, ever with updated notes for latest OpenSSH release

Ubuntu 10.10 (Maverick) installation: 3rd Party Software and Codecs automatic download feature

Ubuntu 10.10 (Maverick Meerkat) has been released! Hopefully some of you have already downloaded the ISO file and installed it on your computer. I’ve yet to install Ubuntu Maverick Meerkat in my computer because I prefer to use the 10.04 Long term support (LTS) release on my file server.

However, I manage to test out the Maverick Meerkat installation on my virtual machine, where I found two things of note. First is that the installer and installation step has been simplified with fewer dialogs and secondly, the installer presents a choice dialog, which enable users to download 3rd party software and codecs to enhance their experience while using Ubuntu. In my opinion, this is probably one of the best decision made by Canonical, which enables new users to download proprietary codecs without distributing it on the installation CD.

ubuntu maverick installation cd

As long as the users are connected to a high speed internet connection, the installer is able to download 3rd party codecs to enable users to enjoy it.

Speed up internet access and browsing in Ubuntu by disabling IPV6

This post is related to “Solving Slow Firefox Web Browsing and Internet app problem“.

This problem is very noticeable in Ubuntu 9.10 (Lucid) onwards and it affects Ubuntu 10.04 (Karmic) too at a certain degree. Even my friend, piju the Ubuntu members also experienced this problem.

To remedy this, another suggested solution (from Brian Yang) is to disable IPV6 completely from Ubuntu.

To do that, you need to add the following lines to /etc/sysctl.conf file


#disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Then you have to reboot, and you can check whether IPv6 has been disabled by running this command:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6

It should display : 1

Note that this “bug” cause internet experience on Ubuntu seems to be perceived as “slower” than the windows machine as it causes delay on DNS lookup.

p/s: I know we should migrate to IPv6 by now, and Ubuntu did a good job, but for the sake of productivity and some users are complaining about the comparison between the internet surfing speed between Ubuntu and other operating system, I felt that something need to done, hence the posts.

Solving Slow Firefox Web Browsing and Internet app problem on Ubuntu Karmic 9.10

Though this post might be dated as it concerns about Ubuntu Karmic Koala release (9.10), but nevertheless the problem can be considered as annoying and serious.

Bug Symptom
People who encountered this bug may report that web browsing speed is relatively slow compared to the internet speed as tested with http://speedtest.net, and some application which uses internet is behaving like it was having problems with network connection.

Actual problem
According to Ubuntu bug report #417757, this problem is caused by DNS resolver which attempts to request IPV6 AAAA record first. The problem is noticeable on application which supports IPV6, where the getaddrinfo() will ask for AAAA record which the DNS resolver does not understand. This will cause the DNS resolver to reject the request and caused a time out on the client side, which in turn cause the delay.

For a web browsing application like Mozilla Firefox, an average website would normally take about 4-10 DNS request and hence the effect would be more noticeable on web browser, making it look like the network is having problems with slow internet connections.

Solutions
The solution for this problem is to install a local DNS resolver (sudo apt-get install pdns-resolver) and to edit the “/etc/resolve.conf” file, changing the ‘nameserver’ parameter to 127.0.0.1

How to use rsync to backup and synchronize files to USB drive

Portable USB drive (sometimes called pendrive) has gained popularity as a medium for storing documents. Computer users would work on the files that they store on the usb drive and occasionally would copy them on their computer, or vice versa.

However this would cause problems if there’s a lot of files being worked on and transfered between usb drive and computers. Valuable time might be lost solely for identifying which of the files are more recent and need to be updated.

Fortunately there’s ‘rsync’, a tool which can be used to synchronize files between the computer and usb drive. Assuming you use Debian or Ubuntu, you only need to start ‘synaptic’ and select ‘rsync’ package. Once installed, start the terminal application and you can begin synchronizing the files using this command


$ rsync -r -vv /home/username/Documents/ /media/your_usb_drive

The general format of rsync command is :

$ rsync -r -vv <local document directory> <remote backup directory>

rsync only updates file which has been changed and would save time and precious harddisk space from maintaining duplicate files.

A Windows version is also available at : http://www.rsync.net/resources/binaries/cwRsync_3.1.0_Installer.zip