Autenticación en SSH basada en Clave Pública

En este articulo voy a explicar como autenticar una sesión de SSH utilizando una clave pública, permitiendo al usuario conectarse sin proporcionar ninguna contraseña

El primer paso para configurar la autenticación con clave publica, es generar una par de claves SSH en tu computadora local. 

Para generar estas claves existe una utilidad llamada ssh-keygen, incluida en el conjunto de herramientas del estandar OpenSSH.

En el terminal de su computadora local escribe:
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa):
El comando le solicitara indicar la ubicación en la cual se almacenaran las claves generadas. Por defecto son almacenadas en el directorio ~/.ssh en el directorio del usuario. La clave privada se llamara id_rsa y la clave publica id_rsa.pub

Por regla general, lo mejor es mantener la ubicación predeterminada, ya que de esta forma tu cliente SSH podrá encontrar automáticamente las claves SSH al intentar autenticarse. Si deseas elegir una ruta diferente, debes escribirla en ese momento,de lo contrario debes pulsar ENTER para mantener la ruta predeterminada.

Si anteriormente has generado un par de claves SSH, es posible que aparezca un mensaje similar a este:
/home/usuario/.ssh/id_rsa already exists.
Overwrite (y/n)?
Si decides sobrescribir la clave existente, ya no podrá autenticarse con la clave anterior. Tenga mucho cuidado al seleccionar , ya que este esto no se puede revertir.
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
A continuación, se le pedirá que introduzca una contraseña para la clave publica. Esta contraseña es opcional, y se utiliza para cifrar el archivo de clave privada en el disco. En nuestro caso lo dejaremos vacio y pulsamos enter.

Se mostrara la siguiente información; que indica que se ha generado un par de claves SSH satisfactoriamente.
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 usuario@equipo_remoto
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+
Ahora, solo nos falta copiar la clave publica al servidor al cual nos queremos conectar; la forma mas facil de hacer esto es utilizando ssh-copy-id 

Para utilizar la herramienta, sólo debe especificar el host remoto al que desea conectarse y la cuenta de usuario a la que tiene acceso SSH. Esta es la cuenta donde se copiará su clave SSH pública.

La sintaxis es:
ssh-copy-id usuario@equipo_remoto

Obtendra un mensaje similar al siguiente:
The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Esto sólo significa que su equipo local no reconoce el equipo remoto. Esto ocurrirá la primera vez que se conecte a un nuevo host. Escriba "yes" y presione ENTER para continuar.

A continuación, la herramienta explorará su cuenta local en busca de la clave id_rsa.pub que creamos anteriormente. Cuando encuentre clave la, le pedirá la contraseña de la cuenta del usuario remoto:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
usuario@111.111.11.111's password:
Escriba la contraseña (los caracteres no se mostrarán por razones de seguridad) y presione ENTRAR. La herramienta se conectará a la cuenta en el equipo remoto utilizando la contraseña que proporcionó. A continuación, copiará el contenido de su clave ~ / .ssh / id_rsa.pub en un archivo del directorio home ~ / .ssh de la cuenta remota denominado authorized_keys.

La salida se ve algo similar a esto
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'usuario@111.111.11.111'"
and check to make sure that only the key(s) you wanted were added.

En este punto, su clave id_rsa.pub se ha subido a la cuenta remota.

Finalmente solo falta intentar conectarse al equipo remoto. 

:)

Comentarios

Entradas populares de este blog

Instalación y configuración del controlador de video AMD Geode LX en netbook UTECH UX80-WHT en Debian Lenny 5.0.4 y Ubuntu 10.04

Alojar imagenes de Wordpress en subdominio.