El sistema de claves pública/privada es mucho más seguro que el uso de contraseñas y además, si quieres, te ahorras la necesidad de recordarlas.
En esta imagen se puede ver el funcionamiento de los pares de llaves. Si os interesa este tema podéis encontrar más información en Wikipedia.
Requisitos:
Generamos el par en la máquina cliente:
$ ssh-keygen -t rsa
Si no queremos que el servidor nos pida contraseña cada vez que iniciamos sesión dejamos en blanco el "passphrase".
Una vez tengamos las llaves tenemos que copiar la pública al servidor (podemos hacerlo mediante SSH):
$ scp ~/.ssh/llave.pub usuario@ejemplo.com:/home/usuario
Nos conectamos al servidor:
$ ssh usuario@ejemplo.com
Dentro del servidor añadimos la llave pública al archivo de llaves autorizadas:
$ cat ~/llave.pub >> ~/.ssh/authorized_keys
$ cp llave.pub ~/.ssh
Para aceptar conexiones desde cualquier máquina que tenga la llave privada editamos "~/.ssh/authorized_keys" y cambiamos el hostname de la máquina cliente por un "*".
Para que funcione los directorios y los archivos deben tener unos permisos concretos:
$ sudo chmod 700 ~/.ssh
$ sudo chmod 600 ~/.ssh/authorized_keys
Editamos la configuración del openssh-server:
$ sudo nano /etc/ssh/sshd_config
Las siguientes líneas deben quedar así:
ServerKeyBits 2048
PermitRootLogin no
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no
UsePAM no
Una vez hecho esto reiniciamos el servicio:
$ sudo service ssh restart
El comando para conectarnos desdel cliente:
$ sudo ssh -i llave usuario@ejemplo.com
Y con esto ya lo tenemos. El servidor no nos pedirá contraseñas para acceder y seguirá siendo seguro.