Cómo configurar claves SSH para una autenticación segura en el servidor

Las claves SSH te permiten autenticarte en un servidor remoto mediante un par de claves, una pública y otra privada, en lugar de usar una contraseña. De este modo, el acceso remoto es más seguro y, si utilizas ssh-agent, no tendrás que introducir la contraseña cada vez que te conectes.

La clave privada permanece en tu ordenador, mientras que la clave pública se almacena en el servidor y se utiliza para verificar la conexión.

Para configurar las claves SSH, sigue estos pasos:

  1. Comprueba los requisitos previos.
  2. Genera un par de claves SSH.
  3. Elige dónde guardar las claves y añade una frase de contraseña.
  4. Añade la clave pública al servidor o a hPanel.
  5. Prueba la autenticación con clave SSH.
  6. Desactiva la autenticación con contraseña cuando hayas comprobado que puedes iniciar sesión con la clave SSH.

1. Comprueba los requisitos previos

Antes de generar las claves SSH, necesitas lo siguiente:

  • Un ordenador con acceso a un terminal. Los usuarios de macOS y Linux pueden utilizar el terminal integrado. En Windows, puedes utilizar PowerShell, el Subsistema de Windows para Linux (WSL), Git Bash o PuTTY para SSH.
  • El nombre de usuario y la dirección IP del servidor remoto. Necesitarás ambos datos para copiar la clave pública al servidor y probar la conexión.
  • Acceso inicial al servidor. Puedes iniciar sesión con una contraseña, acceder mediante la consola o utilizar hPanel. Necesitas algún método de acceso para añadir la clave pública antes de cambiar a la autenticación mediante clave.

Si tienes pensado desactivar la autenticación con contraseña después de configurar las claves SSH, también necesitarás permisos para editar la configuración SSH del servidor.

Warning

Mantén abierta la sesión SSH actual mientras cambias la configuración de autenticación. Si la nueva clave no funciona y ya has cerrado la única sesión que tenías abierta, podrías quedarte sin acceso al servidor.

2. Genera un par de claves SSH

Al generar las claves SSH, se crean dos archivos: uno contiene la clave privada y otro, la clave pública. Ed25519 es el algoritmo recomendado, ya que ofrece un alto nivel de seguridad con una clave compacta de 256 bits y es compatible con todos los sistemas modernos.

Si tu servidor o cliente es antiguo y no admite Ed25519, utiliza RSA con una clave de 4096 bits.

Abre el terminal y ejecuta:

ssh-keygen -t ed25519

Para RSA, utiliza:

ssh-keygen -t rsa -b 4096

En el resto de este tutorial utilizaremos los nombres de archivo de Ed25519. Si has generado una clave RSA, sustituye id_ed25519 por id_rsa.

También puedes añadir un comentario para identificar la clave, algo útil si gestionas varias claves para distintos servidores o cuentas:

ssh-keygen -t ed25519 -C "tu-etiqueta"

Sustituye tu-etiqueta por un identificador fácil de reconocer, como el nombre de un servidor o proyecto.

Important

PuTTY utiliza su propio formato de clave y generador. Si utilizas PuTTY en Windows, consulta nuestra guía para generar claves SSH con PuTTY.

3. Elige dónde guardar las claves y añade una frase de contraseña

Después de ejecutar ssh-keygen, el comando te preguntará dónde quieres guardar la clave:

Enter file in which to save the key (/home/username/.ssh/id_ed25519):

Pulsa Intro para guardarla en el directorio predeterminado ~/.ssh o introduce una ruta personalizada si gestionas varias claves.

Warning

Si especificas un nombre de archivo que ya existe, ssh-keygen lo sobrescribirá. Antes de continuar, asegúrate de que la clave existente ya no se utiliza.

A continuación, el comando te pedirá una frase de contraseña:

Enter passphrase (empty for no passphrase):

La frase de contraseña es opcional, pero es muy recomendable utilizar una. Sirve para cifrar la clave privada almacenada en el disco. Así, aunque alguien consiga acceder a tu ordenador, no podrá utilizar la clave sin conocer la frase de contraseña.

Elige una frase larga y única. Una combinación de palabras que no guarden relación entre sí es una buena opción.

Introduce la frase de contraseña dos veces para confirmarla. El comando mostrará una huella digital y una imagen “randomart” que confirman que se han creado las claves.

Los dos archivos se guardarán en la ubicación especificada. El de la clave pública tiene la extensión .pub, por ejemplo, id_ed25519.pub. El archivo de la clave privada no tiene extensión.

4. Copia la clave pública al servidor remoto

Para que la autenticación con clave SSH funcione, la clave pública debe estar en el servidor. Este la utiliza para comprobar que tu ordenador tiene la clave privada correspondiente. Copia únicamente la clave pública al servidor. Nunca copies el archivo de la clave privada.

Puedes hacerlo de tres formas.

Opción 1: Añade la clave mediante hPanel

Si utilizas un VPS de Hostinger, puedes añadir la clave pública directamente desde hPanel:

  1. Abre el archivo id_ed25519.pub en un editor de texto y copia su contenido.
  2. Inicia sesión en hPanel y ve a VPS → tu servidor → AjustesClaves SSH.
  1. Haz clic en + Clave SSH, pega la clave pública en el campo Contenido de la clave SSH y haz clic en Guardar.

Opción 2: Utiliza ssh-copy-id

ssh-copy-id copia automáticamente la clave pública al servidor mediante una conexión existente con contraseña, lo que permite iniciar sesión en SSH sin contraseña:

ssh-copy-id username@192.0.2.1

Sustituye username por el nombre de usuario del servidor y 192.0.2.1 por su dirección IP. Introduce la contraseña cuando se te solicite. Si la transferencia se completa correctamente, aparecerá un mensaje como este:

Number of key(s) added: 1

Opción 3: Añade la clave manualmente

Si ssh-copy-id no está disponible, inicia sesión en el servidor con tu contraseña y añade la clave pública manualmente:

mkdir -p ~/.ssh chmod 700 ~/.ssh echo "your-public-key-content" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

Sustituye your-public-key-content por todo el contenido del archivo .pub.

5. Prueba la autenticación con clave SSH

Comprueba la conexión antes de modificar cualquier otro ajuste SSH del servidor:

ssh username@192.0.2.1

Si la conexión se establece correctamente, accederás directamente a la línea de comandos del servidor o se te pedirá la frase de contraseña de la clave privada, si has configurado una. Si no se te solicita la contraseña de la cuenta, la autenticación con clave SSH funciona correctamente.

Si el servidor sigue pidiéndote la contraseña, estas son las causas más probables:

  • La clave pública no se ha añadido a la cuenta de usuario correcta del servidor.
  • Se está utilizando una clave privada incorrecta en el ordenador.
  • La autenticación con contraseña sigue habilitada como método alternativo.
  • Los permisos de ~/.ssh o authorized_keys son demasiado permisivos.

Comprueba estos puntos antes de continuar. Si aparece el error “Permission denied” o el servidor sigue solicitando la contraseña, es probable que el archivo authorized_keys esté mal configurado o que los permisos de los archivos del servidor sean incorrectos.

6. Desactiva la autenticación con contraseña cuando las claves SSH funcionen

Cuando hayas comprobado que puedes iniciar sesión con una clave SSH, desactivar la autenticación con contraseña en SSH elimina uno de los vectores de ataque más habituales contra un servidor. Al deshabilitar este método de autenticación, los ataques de fuerza bruta y de credential stuffing ya no pueden dirigirse contra las contraseñas de acceso SSH.

Warning

Hazlo únicamente después de probar el inicio de sesión con clave SSH en otra sesión. Si desactivas la autenticación con contraseña y la clave no funciona, perderás el acceso al servidor. Mantén abierta al menos una sesión SSH para evitar quedarte sin acceso.

Para hacerlo, edita el archivo sshd_config del servidor, establece PasswordAuthentication en no y recarga el servicio SSH para aplicar el cambio.

Cómo gestionar las claves SSH de forma segura

Gestionar las claves SSH de forma segura implica evitar introducir la frase de contraseña cada vez que te conectas, organizar varias claves para distintos servidores y actuar con rapidez si pierdes una clave o esta se ve comprometida.

Utiliza ssh-agent para gestionar claves protegidas con una frase de contraseña

ssh-agent se ejecuta en segundo plano y mantiene las claves privadas desbloqueadas durante la sesión. Una vez que añadas una clave al agente, no tendrás que introducir la frase de contraseña cada vez que te conectes a un servidor.

Para iniciar el agente y añadir una clave:

eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519

Si la clave privada se encuentra en otra ubicación, sustituye ~/.ssh/id_ed25519 por la ruta correspondiente. Para comprobar que se ha añadido la clave, ejecuta:

ssh-add -l

Este comando muestra todas las claves que gestiona el agente en ese momento.

Los comandos anteriores funcionan en cualquier distribución de Linux. En otros sistemas operativos:

  • macOS se integra con Keychain. Añade –apple-use-keychain al comando ssh-add para conservar la frase de contraseña después de reiniciar el sistema.
  • Si utilizas PuTTY en Windows, puedes usar Pageant, el agente de claves de PuTTY, disponible en la página de descargas de PuTTY.

Utiliza el archivo de configuración de SSH para varios servidores

El archivo de configuración de SSH te permite definir en un único lugar la dirección, el nombre de usuario, el puerto y la clave privada de cada servidor. Así no tendrás que introducir estos datos cada vez que te conectes.

El archivo se encuentra en ~/.ssh/config. Esta es una entrada de ejemplo:

Host my-server
HostName 192.0.2.1
User username
IdentityFile ~/.ssh/id_ed25519
Port 22

Con esta configuración, ssh my-server establece la conexión utilizando los ajustes anteriores. Puedes añadir tantas entradas como necesites, una por cada servidor o proyecto.

Se recomienda utilizar un par de claves distinto para cada servidor. Si una clave privada se ve comprometida, solo quedará afectado el servidor asociado a ella, no todos los servidores que gestionas.

¿Qué debes hacer si pierdes una clave SSH o se ve comprometida?

No basta con eliminar la clave privada del ordenador. Si alguien tiene una copia de esa clave privada, podrá seguir accediendo a cualquier servidor que confíe en la clave pública correspondiente.

Debes eliminar la clave pública de todos los servidores a los que la hayas añadido:

  1. Elimina la clave pública afectada del archivo authorized_keys del servidor o elimínala desde hPanel, en AjustesClaves SSH.
  2. Elimina o pon en cuarentena la clave privada expuesta en tu ordenador.
  3. Genera un nuevo par de claves SSH con ssh-keygen.
  4. Añade la nueva clave pública al servidor mediante hPanel, ssh-copy-id o editando manualmente authorized_keys.
  5. Comprueba que la nueva clave funciona antes de cerrar la sesión.

Cómo solucionar problemas con la autenticación mediante clave SSH

La mayoría de los problemas de autenticación con claves SSH se deben a unas pocas causas: permisos incorrectos, claves que no coinciden o cambios de configuración que todavía no se han aplicado.

ProblemaPosible causaQué comprobar
El servidor sigue pidiendo la contraseñaLa clave pública no se ha instalado correctamente o la autenticación con contraseña sigue habilitada como método alternativoComprueba que la clave pública esté en ~/.ssh/authorized_keys en el servidor
Error “Permission denied”Los permisos de ~/.ssh o authorized_keys son incorrectosEstablece los permisos de ~/.ssh en 700 y los de authorized_keys en 600
Se utiliza una clave privada incorrectaEl cliente SSH utiliza otra clave de forma predeterminadaEjecuta ssh -i ~/.ssh/id_ed25519 username@192.0.2.1 para especificar la clave
La clave pública se ha añadido a una cuenta de usuario incorrectaLa clave está en el archivo authorized_keys de otro usuarioComprueba que te conectas con el mismo usuario cuyo archivo authorized_keys contiene la clave pública
El servicio SSH no se ha recargado después de cambiar la configuraciónLos cambios de sshd_config no se han aplicadoEjecuta sudo systemctl reload ssh en Ubuntu/Debian o sudo systemctl reload sshd en CentOS/Rocky Linux/AlmaLinux para recargar el servicio SSH
Problemas con el cortafuegos, el puerto o la dirección IPEl puerto 22 está bloqueado o la dirección IP es incorrectaComprueba las reglas del cortafuegos y confirma que la dirección IP y el puerto SSH del servidor sean correctos. Los errores de conexión SSH rechazada suelen indicar que el puerto está bloqueado o que la dirección IP es incorrecta

Próximos pasos tras configurar las claves SSH

Ahora que utilizas la autenticación con clave SSH, has desactivado el inicio de sesión con contraseña y tienes las claves organizadas, has reforzado la seguridad del acceso al servidor. La autenticación con clave SSH es la base, pero dominar el acceso SSH también implica familiarizarte con las tareas habituales de administración de un servidor remoto.

A partir de aquí, puedes aprender a gestionar archivos, supervisar procesos, administrar permisos de usuario y configurar servicios desde la línea de comandos.

Aprender los comandos básicos de SSH te permitirá realizar las operaciones que necesitarás habitualmente, como navegar por directorios, transferir archivos, comprobar los procesos en ejecución y gestionar servicios.

Todo el contenido tutorial en este sitio web está sujeto a los estándares y valores editoriales más rigurosos de Hostinger.

Faradilla, or Ninda, is a Content Marketing Specialist with a passion for technology, a curiosity for digital marketing trends, and a love for languages. When she's not writing Hostinger tutorials, you can find her learning about life sciences. Follow her on LinkedIn.

Lo que dicen nuestros clientes

Comentarios

0 responses

Write a response

Llena los campos obligatorios, por favor.Acepta la casilla de verificación Privacidad, por favor.Llena los campos requeridos y acepta la casilla de verificación de privacidad, por favor.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.