Normalmente usamos clientes SSH como PuTTY para administrar servidores Linux de forma remota. Sin embargo, el método de inicio de sesión con contraseña común es propenso a ser descifrado por fuerza bruta. Por lo tanto, generalmente cambiamos el puerto SSH a un puerto distinto del 22 predeterminado, o deshabilitamos el inicio de sesión de la cuenta root. En realidad, hay una mejor manera de garantizar la seguridad y que te permita iniciar sesión de forma remota como root con tranquilidad: el inicio de sesión mediante clave.

El principio del inicio de sesión mediante clave es: utilizar un generador de claves para crear un par de claves: una clave pública y una clave privada. Se añade la clave pública a una cuenta del servidor y, a continuación, en el cliente se usa la clave privada para completar la autenticación e iniciar sesión. De este modo, sin la clave privada, nadie puede descifrar tu contraseña por fuerza bruta para acceder remotamente al sistema. Además, si copias la clave pública a otras cuentas o incluso a otros hosts, también puedes iniciar sesión con la clave privada.

A continuación se explica cómo crear un par de claves en un servidor Linux, añadir la clave pública a una cuenta, configurar SSH y, finalmente, iniciar sesión desde el cliente.

1. Crear un par de claves

En primer lugar, crea el par de claves en el servidor. Primero inicia sesión con contraseña en la cuenta con la que deseas usar la clave de inicio de sesión y luego ejecuta el siguiente comando:

[root@host ~]$ ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

La frase de contraseña de la clave debe introducirse al usar la clave privada, lo que protege la clave privada contra el robo. Por supuesto, también se puede dejar en blanco para lograr un inicio de sesión sin contraseña.

Ahora, en el directorio personal del usuario root se ha generado un directorio oculto .ssh que contiene dos archivos de clave. id_rsa es la clave privada e id_rsa.pub es la clave pública.

2. Instalar la clave pública en el servidor

Escribe el siguiente comando para instalar la clave pública en el servidor:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

Así se completa la instalación de la clave pública. Para asegurar una conexión exitosa, verifica que los permisos de los siguientes archivos sean correctos:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

3. Configurar SSH, habilitar la función de inicio de sesión con clave

Edita el archivo /etc/ssh/sshd_config y realiza la siguiente configuración:

RSAAuthentication yes
PubkeyAuthentication yes

Además, presta atención a si el usuario root puede iniciar sesión a través de SSH:

PermitRootLogin yes

Cuando hayas completado todos los ajustes y hayas iniciado sesión correctamente con la clave, desactiva el inicio de sesión por contraseña:

PasswordAuthentication no

Finalmente, reinicia el servicio SSH:

[root@host .ssh]$ service sshd restart

4. Descargar la clave privada al cliente y convertirla a un formato que PuTTY pueda usar

Usa herramientas como WinSCP, SFTP, etc., para descargar el archivo de clave privada id_rsa a la máquina cliente. Luego abre PuTTYGen, haz clic en el botón Load en Actions para cargar el archivo de clave privada que acabas de descargar. Si configuraste la frase de contraseña de la clave antes, deberás ingresarla en este momento.

Después de cargarlo correctamente, PuTTYGen mostrará la información relacionada con la clave. Escribe una descripción de la clave en Key comment y luego haz clic en el botón Save private key para guardar el archivo de clave privada en un formato que PuTTY pueda usar.

En el futuro, cuando uses PuTTY para iniciar sesión, en Connection -> SSH -> Auth (en el lado izquierdo) puedes seleccionar tu archivo de clave privada en 'Private key file for authentication:' y luego iniciar sesión. Durante el proceso solo necesitarás ingresar la frase de contraseña de la clave.