miércoles, 3 de febrero de 2016

SSH login sin password

El presente artículo esta basado en: http://www.linuxproblem.org/art_9.html

Solo consigo pensar en dos motivos por los cuales uno podría desear logearse en un servidor remoto via ssh de manera automática (sin que pida password): primero, que el password es muy complicado (y debe serlo por seguridad) y recordarlo es difícil y, segundo, porque necesitamos que un script se logee sin pedir password. Debe haber más motivos interesantes para hacerlo, pero vamos al grano.

En el computador local ejecutar el siguiente comando: (No colocar ningún password)
usuarioLocal@local: ~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuarioLocal/.ssh/id_rsa):
Created directory '/home/usuarioLocal/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuarioLocal/.ssh/id_rsa.
Your public key has been saved in /home/usuarioLocal/.ssh/id_rsa.pub.
The key fingerprint is:
eb:14:54:8b:51:fa:ef:f3:f5:54:6e:b7:5a:5d:1d:4c usuarioLocal@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|        ..o    E |
|         = .  o  |
|        + .    o |
|       . .      o|
|        S .     +|
|         o .   .+|
|        o   .  .B|
|       o   .. .++|
|        .   .+o..|
+-----------------+


Luego, agregar el contenido del archivo local /home/usuarioLocal/.ssh/id_rsa.pub al archivo remoto /home/usuarioRemoto/.ssh/authorized_keys
Ello puede ser hecho de varias formas, uno se puede logear al computador remoto, abrir el archivo con un editor de texto y copiar el contenido del archivo local. En el artículo de referencia lo hacen de la siguiente forma.
Primero creamos la carpeta en el computador remoto:
usuarioRemoto@remoto: ~$ mkdir -p .ssh

Luego copiamos el contenido:
usuarioLocal@local: ~$: cat .ssh/id_rsa.pub | ssh usuarioRemoto@remoto 'cat >> .ssh/authorized_keys'

La explicación es que generamos un par de llaves que hacen la autenticación del usuario, entonces así el servidor ssh remoto hace valida la llave y permite el acceso.

Nota: solo realizar esto en computadores confiables pues puede comprometer la seguridad del sistema remoto.