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.