Cómo restablecer las claves host SSH al desplegar plantillas de Linux en Proxmox
Tabla de Contenidos
- Introducción
- ¿Por qué es importante asegurarse de que cada instancia tenga sus propias claves host SSH?
- Solución popular: Cloud-init
- Otra forma de automatizar la regeneración de las claves host SSH
- Crear una máquina virtual en Proxmox
- Preparar la instalación de Ubuntu Server
- Configurar la máquina virtual
- Regenerar el ID de máquina
- El problema de las claves host SSH
- Solución incorrecta: clonar virtual machines sin regenerar las claves
- Solución correcta: el servicio
regenerate-ssh-hostkeys
- Configuración y explicación del servicio
- Probar la regeneración de las claves host SSH
- Conclusión
Cómo Asegurar que Cada Instancia Tenga sus Propias Claves Host SSH 🔑
¡Hola a todos! Hoy les mostraré una forma sencilla de asegurarse de que cada instancia que creen a partir de una imagen tenga sus propias claves host SSH. Esto es muy importante, ya que no queremos que todos nuestros servidores tengan las mismas claves, lo cual podría confundir a nuestro cliente SSH.
Introducción
En el mundo de la virtualización, es común crear múltiples instancias de máquinas virtuales a partir de una misma imagen. Sin embargo, si todas estas instancias tienen las mismas claves host SSH, podríamos enfrentar algunos problemas de seguridad y confusión. Por suerte, existen soluciones como Cloud-init que pueden automatizar este proceso. Sin embargo, si no quieres lidiar con la complejidad de Cloud-init, hay otra forma de lograrlo.
¿Por qué es importante asegurarse de que cada instancia tenga sus propias claves host SSH?
Las claves host SSH son utilizadas por el cliente SSH para verificar la identidad del servidor al que se está conectando. Si varias instancias comparten las mismas claves host SSH, el cliente SSH podría mostrar advertencias y errores de seguridad. Además, si alguien obtiene acceso a una de las instancias, también tendría acceso a todas las demás si comparten las mismas claves. Por lo tanto, es fundamental asegurarse de que cada instancia tenga sus propias claves host SSH.
Solución popular: Cloud-init
Cloud-init es una solución muy popular para automatizar la configuración inicial de instancias en la nube. Entre sus muchas funcionalidades, Cloud-init ofrece la capacidad de regenerar automáticamente las claves host SSH cada vez que se crea una nueva instancia. Si ya estás familiarizado con Cloud-init, te recomendamos utilizarlo, ya que es una solución robusta y ampliamente utilizada.
Otra forma de automatizar la regeneración de las claves host SSH
Si no deseas aprender los detalles de Cloud-init, también hay otra forma de automatizar la regeneración de las claves host SSH. En este método, utilizaremos el servicio regenerate-ssh-hostkeys
para reinicializar las claves host SSH en cada nueva instancia creada a partir de una imagen.
Paso 1: Crear una máquina virtual en Proxmox
Si estás utilizando Proxmox, puedes seguir los pasos a continuación para crear una máquina virtual que servirá como ejemplo para este video. Sin embargo, ten en cuenta que este método no es específico de Proxmox y se puede aplicar a cualquier plataforma de virtualización.
Paso 1.1: Elegir el host y configurar la máquina virtual
En primer lugar, elige el host en el que deseas crear la máquina virtual. A continuación, configura la máquina virtual con los recursos y la distribución de tu elección. En nuestro caso, crearemos una máquina virtual con Ubuntu Server.
Paso 2: Preparar la instalación de Ubuntu Server
Antes de poder crear la máquina virtual, necesitamos preparar la instalación de Ubuntu Server. Para ello, sigue los siguientes pasos:
-
Selecciona la ubicación del repositorio de almacenamiento (ISO) que contiene la imagen de instalación de Ubuntu Server.
-
Configura los recursos de la máquina virtual, como el número de núcleos y la cantidad de memoria.
-
Configura la red de la máquina virtual, asegurándote de usar las subredes adecuadas.
Una vez configurado, inicia la máquina virtual y espera a que se complete la instalación de Ubuntu Server.
Paso 3: Configurar la máquina virtual
Al iniciar la máquina virtual de Ubuntu Server, asegúrate de notar el mensaje sobre las claves host SSH. La imagen de instalación de Ubuntu Server se encarga de esto automáticamente. Sin embargo, si conviertes esta máquina virtual en una plantilla, las claves host SSH no se regenerarán automáticamente. No te preocupes, ¡aquí es donde entra en juego nuestro método!
Paso 4: Regenerar el ID de máquina
En este punto, debes asegurarte de regenerar el ID de máquina. Esto no tiene que ver directamente con SSH, pero es algo que definitivamente debes hacer. Si no generalizas el archivo de ID de máquina en tu distribución, podrías enfrentar un escenario en el que todas tus máquinas virtuales luchan por la misma dirección IP. Explicar por qué sucede esto está fuera del alcance de este video, pero te mostraré cómo solucionarlo.
En primer lugar, verifica si el archivo de ID de máquina existe en tu sistema. Si lo tienes, debes eliminar su contenido. Si no lo tienes, no te preocupes, este paso no se aplica a tu caso.
Una vez que hayas verificado la existencia del archivo, ejecuta el siguiente comando para vaciar su contenido:
sudo truncate -s 0 /etc/machine-id
Este paso es importante ya que deseamos que cada máquina virtual generada tenga su propio ID de máquina.
Paso 5: El problema de las claves host SSH
Cuando creamos una imagen o una plantilla de una máquina virtual sin regenerar las claves host, todas las instancias generadas a partir de esa imagen compartirán las mismas claves host. Esto puede ocasionar conflictos y errores de seguridad.
Es importante destacar que simplemente borrar las claves host no es suficiente. Lo que debemos hacer es vaciar el archivo de claves host, de manera que se generen automáticamente cuando se inicie una nueva instancia.
Paso 6: Solución incorrecta: clonar máquinas virtuales sin regenerar las claves
Un error común es clonar máquinas virtuales sin regenerar las claves host. Esto solo resultará en múltiples instancias con las mismas claves host, lo cual queremos evitar.
Paso 7: Solución correcta: el servicio regenerate-ssh-hostkeys
Una forma correcta de asegurarse de que las claves host SSH se regeneren automáticamente es utilizando el servicio regenerate-ssh-hostkeys
.
Lo primero que debemos hacer es acceder a la máquina virtual y ejecutar los siguientes comandos:
sudo nano /etc/systemd/system/regenerate-ssh-hostkeys.service
Esto abrirá un archivo en el editor de texto Nano. A continuación, debemos pegar el siguiente código en el archivo:
[Unit]
Description=Regenerate SSH host keys
Before=ssh.service
[Service]
ExecStart=/bin/sh -c "rm -f /etc/ssh/ssh_host_* && dpkg-reconfigure openssh-server"
[Install]
WantedBy=multi-user.target
Una vez que hayamos pegado el código, guardamos el archivo y salimos del editor de texto. Luego, debemos cambiar los permisos del archivo para asegurarnos de que solo root tenga acceso a él:
sudo chown root:root /etc/systemd/system/regenerate-ssh-hostkeys.service
sudo chmod 644 /etc/systemd/system/regenerate-ssh-hostkeys.service
Después de configurar el archivo, debemos reiniciar Systemd para que re-evalue las unidades de servicio. Para ello, ejecutamos el siguiente comando:
sudo systemctl daemon-reload
Ahora, podemos habilitar el servicio para que se inicie automáticamente durante el inicio del sistema. Ejecuta el siguiente comando:
sudo systemctl enable regenerate-ssh-hostkeys.service
Este comando habilita el servicio regenerate-ssh-hostkeys
y asegura que se ejecute cada vez que reinicies la máquina virtual. Sin embargo, es importante destacar que el servicio se deshabilitará automáticamente después de ejecutarse, para evitar regenerar las claves host SSH en cada inicio de la máquina.
Paso 8: Probar la regeneración de las claves host SSH
Ya casi hemos terminado. Solo tenemos que probar si las claves host SSH se regeneran correctamente al crear nuevas instancias a partir de nuestra imagen o plantilla. Para ello, sigue estos pasos:
-
Crea una nueva instancia utilizando un clon de la imagen o plantilla.
-
Verifica si las claves host SSH generadas para la nueva instancia son diferentes de las claves host SSH anteriores.
Recuerda que si en algún momento deseas regenerar las claves host SSH nuevamente, solo tienes que habilitar el servicio regenerate-ssh-hostkeys
y reiniciar la máquina virtual.
Conclusión
En este video, hemos aprendido cómo asegurarnos de que cada instancia tenga sus propias claves host SSH. Aunque Cloud-init es una solución popular y recomendada, también hemos explorado otra forma de automatizar la regeneración de las claves host SSH utilizando el servicio regenerate-ssh-hostkeys
. Espero que esta información te sea útil y que puedas implementarla de manera efectiva en tus entornos virtuales. Si tienes alguna pregunta, déjame un comentario y estaré encantado de ayudarte. ¡Hasta la próxima!
Recursos: