miércoles, 1 de abril de 2015

Ingreso remoto con SSH sin contraseñas

En esta entrada voy a describir los pasos para identificarnos en una máquina remota utilizando SSH sin necesidad de ingresar una contraseña cada vez que nos identifiquemos.

Paso 1. Generar una llave en la máquina local

Ejecutamos el siguiente comando en una terminal:

$ ssh-keygen

Inmediatamente se nos pedirá la ruta completa y el nombre de la llave. Puedes darle a la llave el nombre que quieras y ponerlo en la ruta que desees. Para este ejemplo la llave se llamará mi-llave y lo guardaremos en la carpeta /home/usuario/.ssh/:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): /home/usuario/.ssh/mi-llave
No ingresaremos ninguna contraseña por lo que simplemente presionaremos Enter dos veces:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): /home/usuario/.ssh/mi-llave
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

Finalmente, se nos habrá creado la llave con el nombre y en la ruta especificada:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): /home/usuario/.ssh/mi-llave
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/mi-llave.
Your public key has been saved in /home/usuario/.ssh/mi-llave.pub.
The key fingerprint is:
a3:c1:d4:be:ca:c5:50:5c:da:71:25:a4:c4:81:1c:a2 deivit@mimaquina
The key's randomart image is:
+--[ RSA 2048]----+
|       .+.+..    |
|     .+= = .     |
|     .+==        |
|    Eo.  .       |
|    o . S        |
|   o + . .       |
|    o =          |
|   . o .         |
|    o..          |
+-----------------+

Paso 2. Copiar la llave pública a la máquina remota

Ejecutamos el siguiente comando (cambiar el texto resaltado por los datos de tu máquina remota):

$ ssh-copy-id -i /home/usuario/.ssh/mi-llave.pub user_remoto@ip_remoto

Inmediatamente se nos pedirá ingresar la contraseña del usuario en la máquina remota:

$ ssh-copy-id -i /home/usuario/.ssh/mi-llave.pub user_remoto@ip_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
user_remoto@ip_remoto's password:

Ahora la llave ha sido copiada a la máquina remota:

$ ssh-copy-id -i /home/usuario/.ssh/mi-llave.pub user_remoto@ip_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
user_remoto@ip_remoto's password:
Number of key(s) added: 1

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

Paso 3. Relacionar la llave con la máquina remota

Editaremos el archivo /home/usuario/.ssh/config (crearlo si no existe). Agregaremos el siguiente texto (cambiar lo que está resaltado por los datos de la máquina remota):

Host ip_remoto
    port 22
    IdentityFile /home/usuario/.ssh/mi-llave

Paso 4. Probar que todo funciona correctamente

Ahora solo nos resta probar que todo ha salido correctamente. Para ello simplemente ejecutamos el siguiente comando (cambiar lo resaltado):

$ ssh user_remoto@ip_remoto

Y si todo ha salido bien, ingresaremos a la máquina remota y no se nos pedirá ninguna contraseña.

Fuentes:

  1. openssh - Does ssh key need to be named id_rsa? - Ask Ubuntu
  2. 3 Steps to Perform SSH Login Without Password Using ssh-keygen & ssh-copy-id

No hay comentarios:

Publicar un comentario