LINUX

Configure el inicio de sesión SSH sin contraseña en pasos simples

inicio de sesión ssh sin contraseña

Por lo general, ingresamos una combinación de nombre de usuario y contraseña para conectarnos a una consola SSH. Pero, hay algo más seguro que el inicio de sesión con contraseña, tenemos un inicio de sesión SSH sin contraseña utilizando las claves cifradas. Las posibilidades de descifrar una clave son prácticamente nulas, mientras que las contraseñas incorrectas son demasiado comunes con un intento de fuerza bruta.

Solo las estaciones de trabajo que tengan el par de claves coincidente correcto (privado y público) podrán iniciar sesión en el servidor SSH; sin el emparejamiento de claves, no se permitirá el acceso.

En este tutorial, aprenderemos cómo podemos configurar el inicio de sesión SSH sin contraseña en sistemas Linux.

Para ilustrar el inicio de sesión ssh sin contraseña, me voy a conectar (ssh) desde una máquina cliente CentOS (192.168.168.121) a una máquina Ubuntu remota (192.168.215.83) sin ninguna contraseña.

Verifique las claves SSH existentes

Es posible que tenga algunas claves existentes en su máquina cliente que fueron creadas anteriormente. Puede utilizar la clave existente o crear una nueva. Además, recuerde que puede sobrescribir su clave existente si ejecuta el comando ssh-keygen con las mismas opciones.

$ ls -al ~/.ssh/id_*.pub

Si vuelve No such file or directory, significa que no hay claves públicas disponibles actualmente.

1) Genere el par de claves

Para generar claves ssh, puede usar ssh-keygen comando que generará dos claves y las almacenará en dos archivos diferentes. Estos dos archivos se almacenan en una carpeta oculta .ssh en el directorio de inicio del usuario. Puede proporcionar sus propios nombres para el archivo o, de forma predeterminada, se almacenará en id_dsa (clave privada) y id_dsa.pub archivos (clave pública).

Cuando cree sus claves, se le pedirá una frase de contraseña. Se utiliza para proteger su clave y se le pedirá cuando desee conectarse a través de ssh.

El siguiente comando ssh-keygen crea una nueva clave ssh con un tamaño de clave 4096 (-b), algoritmo rsa (-t), opcional su dirección de correo electrónico como comentario (-C).

$ ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

generar par de claves ssh

Por defecto, lo privado se almacena en el archivo id_rsa, para evitar sobrescribirlo, puede almacenarlo en un archivo diferente. Si especificamos implícitamente un nombre de archivo, ambas claves se almacenarán en la carpeta actual.

Enter file in which to save the key (/home/tom/.ssh/id_rsa):

Enter passphrase está vacío de forma predeterminada. Si tiene algún script o utilidades que necesiten una conexión sin contraseña a una máquina remota, deje passpshare vacío.

Enter passphrase (empty for no passphrase):

Los siguientes mensajes indicaron dónde y qué archivos almacenó la clave pública y privada.

Your identification has been saved in /home/tom/.ssh/id_rsa
Your public key has been saved in /home/tom/.ssh/id_rsa.pub

Esto muestra la huella digital y la imagen aleatoria que es exclusiva de esta clave y puede compartirse con otros para verificar la clave pública.

The key fingerprint is:
SHA256:EihoyQO0PmdBKjesoIKZ5X3JdzN0It18a7FxGi4ovWQ tom@linoxide.com
The key's randomart image is:
+---[RSA 4096]----+
|o. .             |
|oo=  .   . o     |
|+B*.. . . + + = .|
|BB.+.. o + + o O |
|Bo.o. = S E . *  |
|. +  . o = + o   |
|          .      |
|                 |
|                 |
+----[SHA256]-----+

Cuando ejecuta el comando ssh-keygen, mantiene el par de claves por defecto en ~/.ssh directorio, que se creará si no existe:

Puede listar archivos de pares de claves usando el siguiente comando ls:

[tom@centos02 ~]$ ls -l /home/tom/.ssh/
total 8
-rw-------. 1 tom tom 3381 May 28 13:00 id_rsa
-rw-r--r--. 1 tom tom 742 May 28 13:00 id_rsa.pub

El siguiente comando muestra la huella digital y la imagen aleatoria después de que se crea el par de claves:

$ ssh-keygen -lv

mostrar huella digital

Para mostrar el contenido del archivo de clave pública, ejecute el siguiente comando.

$ cat .ssh / id_rsa.pub

imprimir clave pública

En la siguiente sección, discutimos cómo copiar el contenido del archivo ‘pub’ al host remoto.

2) Copie la clave pública a la máquina remota

Ahora necesita copiar el contenido de su clave pública a ~/.ssh/authorized_keys archivo en la máquina remota.

Crear .ssh directorio y authorized_keys archivo en el directorio de inicio del usuario (si es root, entonces / home / root), si no existe.

Para hacerlo, puede hacerlo manualmente o utilizando ssh-copy-id mando.

Por copia manual

El siguiente comando crea .ssh directorio en la carpeta de inicio del usuario (tom) en la máquina remota:

$ sudo ssh tom@45.33.3.15 mkdir -p .ssh

crear directorio en servidor remoto

Ahora pegue o transfiera el contenido de la clave pública (máquina cliente) al servidor remoto:

$ sudo cat .ssh/id_rsa.pub | ssh tom@45.33.3.15 'cat >> .ssh/authorized_keys'

Utilizando ssh-copy-id

Si no desea copiarlo manualmente, podemos usar ssh-copy-id comando que hará lo mismo de la siguiente manera:

$ sudo ssh-copy-id -i ~/.ssh/id_rsa.pub tom@45.33.3.15

comando ssh-copy-id

Puede ver el contenido de los archivos autorizados_keys para asegurarse de que la clave se haya copiado.

$ cat .ssh/authorized_keys

archivo de claves autorizadas

3) Verifique el ssh sin contraseña

Ahora que hemos copiado la clave pública en el servidor, deberíamos iniciar sesión sin contraseña.

Podemos verificar ejecutando el siguiente comando ssh usando el usuario (tom):

[tom@centos02 ~]$ ssh tom@45.33.3.15 
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)
Last login: Fri May 29 03:14:32 2020 from 104.237.141.158
$ hostname
ubuntu01
$

Puede ver en el resultado anterior que no solicitó ninguna contraseña.

Deshabilitar la autenticación de contraseña

Si todas las cuentas de usuario en el servidor se autentican con claves públicas (incluida la raíz), puede deshabilitar la autenticación mediante una contraseña.

Para habilitar la autenticación por clave pública y deshabilitar la autenticación por contraseña, edite /etc/ssh/sshd_config expediente.

Modifique las siguientes líneas en sshd_config:

$ vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no
ChallengeResponseAuthentication no

Después de hacer los cambios reiniciar sshd Servicio:

$ sudo systemctl reload sshd

Una vez que los usuarios están autenticados usando claves, puede considerar deshabilitar el inicio de sesión ‘root’ para ssh (establezca PermitRootLogin no).

Claves con frase de contraseña

En situaciones en las que las claves privadas necesitan más seguridad, se recomienda establecer una frase de contraseña. Cuando las claves tenían una frase de contraseña, cada vez que la conexión shh lo solicitaba, solicitaba la frase de contraseña. Será casi como un inicio de sesión con contraseña.

OpenSSH tiene una utilidad llamada ssh-add que puede agregar claves privadas ssh en la autenticación ssh, por lo tanto, el usuario puede iniciar sesión sin contraseña.

Primero establezcamos una frase de contraseña para nuestra clave existente usando -p opción

[tom@centos02 ~]$ ssh-keygen -p
Enter file in which the key is (/home/tom/.ssh/id_rsa):
Key has comment 'tom@linoxide.com'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.

Ahora, si intentamos iniciar sesión nuevamente, se solicitará una frase de contraseña:

[tom@centos02 ~]$ ssh tom@45.33.3.15
Enter passphrase for key '/home/tom/.ssh/id_rsa':

Ejecute el siguiente comando en caché de la clave privada desbloqueada:

$ ssh-agent $SHELL

$ ssh-add -L
The agent has no identities.
$ ssh-add 
Enter passphrase for /home/tom/.ssh/id_rsa:
Identity added: /home/tom/.ssh/id_rsa (tom@linoxide.com)

Ahora intente iniciar sesión nuevamente, verifique que no se le solicite la frase de contraseña.

Establecer permiso

Solo asegúrese de que el directorio .ssh y los archivos autorizados_keys en el servidor remoto tengan los permisos adecuados. Para proteger la clave pública, configure los permisos para el acceso a la clave de la siguiente manera:

$ sudo chmod 700 .ssh

$ sudo chmod 600 .ssh/authorized_keys

Conclusión

En este tutorial, explicamos cómo configurar el inicio de sesión sin contraseña entre dos sistemas Linux. En caso de que desee revocar el acceso, elimine la línea de la clave pública del archivo autorizado_keys.

Es una buena práctica habilitar la autenticación de clave pública SSH en lugar de usar contraseñas en las redes. Sin embargo, es igualmente importante renovar sus claves SSH en intervalos de tiempo frecuentes para mayor seguridad.

Tenga en cuenta que las claves de 1024 bits DSA y RSA están en desuso. Se recomienda actualizar las claves para utilizar los últimos algoritmos ed25519 o ecdsa que tienen firmas de alta seguridad.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar