A blog about data, information and IT, by Mario Alberich

Jun 10
2013

Autenticación SSH por clave pública

Las operaciones de carga de contenidos y de gestión de servidores por SSH es imprescindible. La operativa implica el conocimiento de las claves de acceso, y cuando se llega a un determinado número de servidores distintos, cada uno con sus propias claves, la memoria empieza a fallar, se empiezan a apuntar las contraseñas en sitios no siempre seguros (al menos no tanto como nuestra memoria), y ni siquiera así las recordamos todas.

Así que, quizá, podríamos disponer de una sola clave para todas estas autenticaciones. O quizá ninguna clave, sólo un elemento que nos identifique en el servidor.

Una clave para todos los accesos


Afortunadamente SSH permite generar claves públicas. Una clave pública no es más que un pequeño archivo con un código derivado de nuestra clave SSH privada, y que permite que un servidor, mediante operaciones criptográficas, pueda confirmar que nosotros somos los creadores de ese archivo.

Pero entonces, contraseña, ¿Sí o no?


Pues no es necesario, pero sí muy recomendable.  Piensa que si alguien tiene acceso a tu equipo de trabajo (o al pendrive, o cualquier soporte donde estén esas claves), la contraseña es la única barrera entre éste y el acceso a ese servidor.

Lo cierto es que con la clave pública puedes utilizar unas pocas contraseñas (o una sola, eso depende de ti) para todas las claves públicas de acceso, y por ello ya no deberás que recordarlas. Pero entre eso y prescindir completamente de contraseñas, mejor usa unas pocas con criterio.

Bueno y ahora, basta de cháchara, vamos al grano.

Crear clave pública

~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mario/.ssh/id_dsa): mynewpubkey
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in mynewpubkey.
Your public key has been saved in mynewpubkey.pub.
The key fingerprint is: 60:d6:96:ba:40:11:72:78:f0:c4:xx:xx:xx:xx:xx:xx user@host
The key's randomart image is:
+--[ RSA 1024]----+
|  o+=o .         |
|  .=o.+. .       |
|   .oo+++        |
|   .+oE+         |
|    .=. S        |
|    ....         |
|     ..          |
|                 |
|                 |
+-----------------+

Así que ahora podemos encontrar los archivos mypubkey y mypubkey.pub. El primer archivo es la clave privada. Debemos copiarlo al directorio .ssh de nuestro usuario local, y cargar la clave pública al servidor al cual queremos acceder. Puedes tener varios archivos de claves en ese mismo directorio.

Autenticación indicando la clave


Es necesario cargar ese archivo de clave pública al servidor SSH al que queremos autenticarnos con clave pública. Para ello hay que acceder al directorio del usuario con el que nos identificaremos (supongamos que sea "myuser") y crear/modificar el archivo de claves aceptadas:

~$ cd /home/myuser/.ssh
# si ya existe, no es necesario crear el archivo 
~$ touch authorized_keys
~$ cat mypubkey.pub >>  authorized_keys

Lo anterior supone  que hemos cargado vía SCP el archivo mypubkey.pub al servidor que queremos conectar, y que lo hemos dejado en /home/myuser/.ssh/mypubkey.pub.

Después de cargar la clave, podemos conectarnos vía SSH. La contraseña que se nos pedirá es la de la clave SSH y no la del servidor, si es que hemos indicado contraseña de la clave.

Finalmente estamos dentro, y ya tenemos una contraseña menos que recordar ;-).

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.