Lo básico
El servidor SSH tiene varias formas de autenticar a un cliente que se conecta a él. El método más popular es la autenticación basada en contraseña, ya que es el más fácil, sin embargo, no es tan seguro. Las contraseñas se intercambian con mecanismos seguros, sin embargo, debido a la facilidad de uso, generalmente no son complejas ni largas. Esto permite al atacante descifrar la contraseña mediante ataques de fuerza bruta o de diccionario. En tales escenarios, las claves SSH pueden proporcionar un medio de autenticación seguro y confiable para los clientes.
El servidor SSH utiliza un esquema de criptografía de clave pública para autenticar a los usuarios. En este esquema, se generan un par de claves, una clave pública y una clave privada, para la autenticación. Como sugiere el nombre, el cliente mantiene en secreto una clave privada, ya que su compromiso puede llevar a que alguien inicie sesión en el servidor sin ninguna autenticación adicional.
La clave pública correspondiente a la clave privada secreta del cliente no se mantiene como secreta y se copia en los sistemas en los que el usuario inicia sesión. La clave privada se utiliza para descifrar el mensaje cifrado mediante la clave pública asociada del cliente. Usando el par de claves, también podemos habilitar la autenticación sin contraseña. La clave pública de confianza del cliente se almacena en un archivo especial llamado authorized_keys en el directorio de inicio de la cuenta de usuario.
Cuando un cliente intenta autenticar el servidor SSH usando claves, se emite un desafío usando la clave pública del cliente almacenada en el servidor. Al descifrar con éxito el desafío usando la clave privada del cliente, el usuario obtiene acceso al shell del servidor.
Configurar la autenticación de solo clave pública para ssh
1. Como raíz, edite el archivo de configuración del demonio sshd (/etc/ssh/sshd_config ).
2. Modifique los parámetros PermitRootLogin y PubkeyAuthentication para que tengan los siguientes valores:
PermitRootLogin without-password PubkeyAuthentication yes
Permita solo el inicio de sesión ssh basado en clave en la cuenta raíz configurando el valor de la directiva PermitRootLogin como sin contraseña como se muestra arriba.
3. Verifique que la sintaxis del archivo de configuración sshd_config sea correcta antes de reiniciar sshd deamon.
# sshd -t
El comando anterior no debería devolver nada. Esto significa que el archivo de configuración es sintácticamente correcto y está seguro de reiniciar el demonio sshd sin ningún problema.
4. Reinicie el demonio sshd:
# service sshd restart
o
# systemctl restart sshd