Acceso por SSH con llave de autenticación en lugar de clave.

Introducción

Para este escrito utilizo las palabras llave en lugar de Key y clave en lugar de password.

SSH es una herramienta muy utilizada entre los administradores de sistemas. Sin embargo, confiar el acceso en una clave ingresada por un humano no es algo muy astuto. Algunos scripts de ruptura de claves pueden irrumpir en el sistema debido a un usuario perezoso con una clave simple o débil. Un buen administrador de sistemas es el que escoge e implementa buenas claves de acceso.

La buena noticia es que existen formas de permitir el acceso sin preocuparse por estar escribiendo complicadas claves en ocasiones difíciles de memorizar. El método que intentare explicar es llamada criptografía asimétrica.
La llave privada del usuario es la que garantiza la autenticación. De tal manera que al usted bloquear la cuenta del usuario se bloquea también el acceso.
Otra ventaja de este método es que no se necesitan diferentes claves para ingresar a diferentes servidores. Así que te puedes autenticar utilizando la llave personal pero privada en todos los servidores sin escribir complicadas claves.
Por lo tanto es posible hacer accesos a los servidores sin la pregunta de tu clave con este método.

Como hacerlo

1.Generando la llave de autenticación.

En la máquina cliente, el usuario debe generar un par de llaves publica / privada que lo identificaran a si mismo en los servidores. Puede así mismo elegir si ser protegida con clave o no.
Al dejar la llave sin clave cualquiera que tenga acceso al archivo de la llave (por ejemplo root en la máquina del cliente) obtendría el mismo nivel de acceso que el usuario y no se le preguntaría ninguna clave cuando el cliente intente conectarse al servidor.
Protegiendo las llaves con clave significa que cada vez que el usuario intenta conectarse al servidor con su llave personal la clave para descifrarla es preguntada.
Esto por supuesto es mas seguro, ya que cualquiera que obtenga el archivo de la llave solamente verá una versión codificada.

Para generar el par de llaves ejecutamos (en el equipo cliente)

~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mmejiav/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mmejiav/.ssh/id_rsa.
Your public key has been saved in /home/mmejiav/.ssh/id_rsa.pub.
The key fingerprint is:
de:32:99:54:12:92:1b:5b:4e:da:68:e2:10:b1:cb:b0 mmejiav@feroz
The key\’s randomart image is:
+–[ RSA 2048]—-+
|  ..  …        |
|  ..  o.o.       |
|. ..   @. .      |
| +… * oo       |
|E oo o  S        |
|    .  o +       |
|        * .      |
|         o       |
|                 |
+—————–+

En este ejemplo dejé el directorio y archivo por defecto y escribí una clave a ser utilizada como explique antes.
Si necesita cambiar la clave o adicionar una nueva

~$ ssh-keygen -p
Enter file in which the key is (/home/mmejiav/.ssh/id_rsa):
Enter old passphrase:
Key has comment \’/home/mmejiav/.ssh/id_rsa\’
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.

Pregunta ubicación de la llave, clave antigua, nueva clave y repetir la nueva clave.
Esta operación no cambia las llaves publicas / privadas. Solo cambia la clave para el login.

2. Instalar la llave publica en los servidores

Una vez que la llave publica es instalada en el servidor, el acceso es concedido sin pregunta de clave.
SSH usualmente viene con una utilidad llamada ssh-copy-id que sencillamente adiciona el contenido de ~/.ssh/id_rsa.pub del cliente a la localización ~/.ssh/authorized_keys en el servidor.

El paso es copiar la llave antes generada en el servidor al cual queremos ingresar.

~$ ssh-copy-id -i .ssh/id_rsa.pub mmejiav@192.168.0.6
mmejiav@192.168.0.6\’s password:
Now try logging into the machine, with \”ssh \’mmejiav@192.168.0.6\’\”, and check in:

.ssh/authorized_keys

to make sure we haven\’t added extra keys that you weren\’t expecting.

En este punto la clave de acceso es necesaria.  También se puede copiar la llave generada en el primer paso con el comando scp.
En dicho caso se debe copiar el archivo id_rsa.pub en el servidor y agregar el contenido de dicho archivo en el final del archivo authorized_keys luego de copiar el archivo

En el servidor:

#cat id_rsa.pub >> .ssh/authorized_keys

Conclusión

Este método mejora bastante la seguridad y además permite mejorar el acceso en varios servidores sin muchas claves. Existen otros métodos algoritmos y opciones para utilizar, se los dejo a ustedes.

Si encuentras errores o discrepancias, no te funciona algo o algún consejo para mejorar por favor dímelo para corregirlo.

Un comentario sobre “Acceso por SSH con llave de autenticación en lugar de clave.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s