GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo funciona SSH sin contraseña en Linux / UNIX

SSH es un protocolo para transferir datos de forma segura entre diferentes máquinas. El protocolo SSH utiliza criptografía de clave pública para permitir que el cliente autentique el servidor y, si es necesario, permitir que el servidor autentique al cliente sin enviar contraseñas de un lado a otro.

La criptografía de clave pública utiliza un par de claves públicas y privadas. La clave privada se mantiene en secreto y nunca se transfiere a través de la red. La clave pública se puede distribuir a todos los pares. Los mensajes cifrados con la clave pública solo se pueden descifrar con la clave privada.

En el momento de la conexión SSH, el cliente recibe la clave pública del servidor y verifica si coincide con la clave pública almacenada en $HOME/.ssh/known_hosts . Si esta prueba tiene éxito y el servidor no tiene la clave pública del cliente, se requiere una contraseña. De lo contrario, el servidor envía un mensaje encriptado con la clave pública del cliente y si el cliente logra desencriptar el mensaje con éxito, utilizando su clave privada, se establece la conexión.

Hay dos versiones del protocolo SSH, la versión 1 y la 2. Los cifrados están vinculados a la versión del protocolo. La versión 1 sufre de vulnerabilidades de seguridad, siempre que sea posible, se debe usar la versión 2. La mayoría de los servidores SSH usan la versión 2 del protocolo debido a las limitaciones de la versión 1.

Existen 2 algoritmos para el cifrado de pares de claves pública-privada, RSA y DSA .

Configuración del cliente

Protocolo Tipo Línea de comandos
Versión 1 RSA1 -t rsa1
Versión 2 RSA -t rsa
Versión 2 DSA -t dsa

Después de determinar qué tipo de identidad desea/necesita, el primer paso es generar un par de claves públicas y privadas y copiar la parte pública en el lugar apropiado del lado del servidor. En el directorio de inicio del usuario, en la máquina cliente, ejecute (debe tener el directorio $HOME/.ssh, si no, créelo):

# ssh-keygen -t dsa -f ~/.ssh/id_dsa 
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab
The key's randomart image is:
+---[DSA 1024]----+
|..  ..*.=o+......|
|.=.o o * %o*.ooE |
|o.B . * X O.+.   |
| +   = * * o     |
|      + S =      |
|       .   o     |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Toma,
-t – se utiliza para el tipo de cifrado.
-f – dónde almacenar los pares de claves pública/privada. En este caso, el directorio .ssh en la página de inicio del usuario.

Se le pedirá una frase de contraseña después de ejecutar el comando anterior. Deje esta parte en blanco, simplemente presione [enter] si no desea escribir esta frase de contraseña en cada conexión. Alternativamente, se podría configurar un ssh-agent para manejar las frases de contraseña.

El comando anterior crea dos archivos en ~/.ssh:

# ls -lrt ~/.ssh/id_dsa*
-rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub
-rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa

Configuración del servidor

El archivo id_dsa.pub contiene la clave pública del cliente, que debe agregarse al archivo $HOME/.ssh/authorized_keys en el servidor:

1. Copie el archivo id_dsa.pub al servidor:

client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub

Por supuesto, esta vez deberá ingresar la contraseña del usuario.

2. Ahora, inicie sesión en la máquina del servidor y vaya al directorio .ssh en el lado del servidor

client$ ssh user@server
server$ cd .ssh

3. Ahora, agregue la clave pública del cliente a la lista de claves públicas conocidas en el servidor:

server$ cat id_dsa.pub >> authorized_keys
server$ chmod 640 authorized_keys
server$ rm id_dsa.pub
server$ exit

eso es todo.

Pruebas

Para probar si el ssh sin contraseña funciona, use la siguiente sintaxis:

$ ssh -l [user] [server]
Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100

o alternativamente

$ ssh [user]@[server]
Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100

Si el sistema no le solicitó una contraseña, todo funciona correctamente.

Advertencia

¡Asegúrate de mantener en secreto tu clave privada (~/.ssh/id_dsa)! Si bien es seguro dar su clave pública (~/.ssh/id_dsa.pub) al mundo, debe tener mucho cuidado de que nadie más pueda leer su clave privada (~/.ssh/id_dsa). Cualquiera que tenga acceso a la clave privada puede iniciar sesión en cualquier máquina donde esté instalada la clave pública correspondiente.


Linux
  1. Cómo cambiar el puerto SSH en Linux

  2. Cómo configurar la autenticación basada en clave SSH en Linux

  3. Cómo configurar Rsync con SSH en UNIX/Linux (rsync sin contraseña)

  4. Cómo configurar las claves SSH para el inicio de sesión ssh "sin contraseña" en Linux

  5. Cómo usar el comando ssh-keygen para configurar ssh sin contraseña

Cómo configurar la clave pública y privada SSH en Linux

Cómo configurar el inicio de sesión sin contraseña SSH en AlmaLinux

Cómo configurar claves SSH en Debian 11 Linux

Cómo SSH al servidor a través de Linux

¿Cómo generar y usar la clave SSH en el sistema Linux?

Cómo deshabilitar la verificación de clave de host SSH en Linux