Acceder por SSH sin contraseña

SSH sin password

Autenticarse por SSH sin usar contraseña

Cuando estamos accediendo constantemente por SSH a una o varias máquinas remotas tenemos que estar introduciendo contraseñas no muy amigables de recordar.
Para evitar esta repetitiva tarea podemos crear un sistema de clave pública/privada de formar que solo tengamos que escribir ssh usuario@servidor para acceder sin introducir nada más.

Lo primero que debemos hacer es comprobar si tenemos alguna clave pública generada anteriormente y, en caso que exista podremos sobre escribirla o usar la que ya tenemos.
Para saber si tenemos alguna clave previamente almacenada podemos listarlas del directorio por omisión:

ls ~/.ssh/id_*.pub

Si nos devuelve un mensaje de que no ha encontrado archivo alguno pues está claro que, al menos, en el directorio por omisión no tenemos almacenada clave alguna.
Si nos devuelve algún o algunos archivos es que ya la habíamos generado.
En cualquier caso podemos volver a generarla y sobre escribirla.

Crear clave pública SSH

Vamos a crear la clave que vamos a usar en los diferentes servidores a los que nos conectemos por SSH.
Escribimos el siguiente comando:

ssh-keygen

Y nos preguntará que escribamos el nombre en el que queremos guardar la clave, aunque podemos dejarla por defecto, pulsando intro, y lo hará en id_rsa:

Generating public/privateorsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa):

Después nos preguntará por la contraseña para la encriptación, pero podemos dejarla tal cual si es nuestra máquina y solo la usamos nosotros, para ello pulsamos intro sin escribir nada.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Por último nos devolverá la huella generada y creará el archivo privado id_rsa y el público id_rsa.pub.

Especificación de ssh-keygen

ssh-keygen tiene muchos parámetros muy interesantes pero hay dos que nos pueden interesar en primera instancia.
Si quieres profundizar:

ssh-keygen --help

Los parámetros que pueden ser más útiles son -tcon el que podemos indicar el tipo de codificación dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa, por defecto, y si no se indica nada, usa rsa.
A continuación podemos indicar el número bits, por defecto, si no escribimos nada, usa 2048 bits pero podemos poner, por ejemplo, 4096.
Por tanto, el resultado final sería:

ssh-keygen -t rsa 4096

Generando una clave rsa con una profundidad de 4096 bits.
Como en la que creamos previamente no habíamos especificado nada significa que habíamos creado una clave rsa con una profundidad de 2048 bits.

Copiar la clave pública al servidor

El siguiente paso es copiar nuestra clave pública en el o los servidores a los que habitualmente nos conectamos.

ssh-copy-id usuario@servidor

Nos devuelve un texto similar al siguiente y nos pide, por última vez, la contraseña que usamos para conectarnos a este servidor en cuestión.

ssh-copy-id usuario@servidor
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/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@servidor) Password: 

Number of key(s) added:        1

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

A partir de este momento, cada vez que queramos conectarnos a este servidor, solo tendremos que escribir:

ssh usuario@servidor

y accedermos directamente.

Especificar puerto de conexión

Si al copiar la clave al servidor, este no usa el puerto estándar 22, tendremos que especificarle cual es el que tiene que usar por lo habría que añadirlo especificándolo, al igual que cuando nos conectamos a él.

ssh-copy-id usuario@servidor -p2222

y para conectarnos, lo especificamos de igual forma.

ssh usuario@servidor -p2222

Configuración de sshd en el servidor

Hay que comprobar la configuración de sshd:
En el servidor, asegúrate de que estas líneas no estén comentadas en /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Facebook
X
LinkedIn
WhatsApp
Email

Sobre mi

Trabajo en el desarrollo de webs profesionales desde hace más de 25 años.
También me dedico a mis proyectos personales.

Últimas notas publicadas

Categorías

Scroll al inicio