Una máquina en la nube no tiene un teclado al que acercarse. Si pierdes la clave SSH, si alguien cambió la contraseña de Administrator y se fue de la empresa, o si un cambio en la configuración de SSH te deja fuera, la máquina sigue funcionando pero tú ya no mandas en ella. Lightsail te saca del apuro en Linux (su consola web entra con una clave temporal), pero en Windows solo si nadie tocó la contraseña, y en EC2 el camino oficial pasa por parar la máquina. Esta guía te enseña a dejar preparada una puerta de emergencia antes de necesitarla, hecha para que solo tú puedas usarla.
Antes de empezar: qué significa cada cosa
- Usuario de rescate
- Un usuario administrador más en la máquina, que no se usa para trabajar: solo para recuperar el acceso al resto.
- Certificado SSH
- Una "clave con fecha de caducidad" firmada por una autoridad en la que la máquina confía. A diferencia de una clave normal, no hay que copiarla a la máquina y puede valer solo cinco minutos.
- Autoridad de certificados (CA)
- La clave que firma esos certificados. La máquina acepta a quien traiga un certificado firmado por ella; sin la CA no se puede fabricar ninguno.
- from=
- Una condición en la configuración de SSH: ese usuario solo puede entrar desde una dirección IP concreta.
- sudo / Administrators
- La forma de ser administrador en Linux (sudo) y en Windows (grupo Administrators).
Paso a paso
Decide cómo quieres que sea la puerta de emergencia
Un usuario de rescate mal hecho es peor que no tenerlo: una contraseña apuntada en un documento compartido es la primera puerta que prueba un atacante. Lo que buscamos: que no tenga contraseña, que solo admita certificados firmados por ti y de corta duración, y a ser posible que solo acepte conexiones desde una IP fija tuya. Así, aunque alguien conozca el nombre del usuario, no tiene nada que probar.
Crea una autoridad de certificados (una sola vez)
En tu ordenador, no en la máquina:
ssh-keygen -t ed25519 -f ca_rescate -C "CA de rescate"Guarda
ca_rescate(la privada) en un sitio seguro: un gestor de contraseñas o un disco cifrado. Nunca la copies a las máquinas. El ficheroca_rescate.pubes el que irá a cada máquina.Prepara la máquina Linux
Entra por SSH como siempre (todavía puedes) y, con sudo:
sudo useradd -m -s /bin/bash -c "Usuario de rescate" rescate sudo usermod -p "*" rescate # sin contraseña valida, sin bloquear echo "rescate ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/90-rescate sudo chmod 440 /etc/sudoers.d/90-rescate sudo cp ca_rescate.pub /etc/ssh/ca_rescate.pub echo 'from="TU.IP.FIJA" rescate' | sudo tee /etc/ssh/principales_rescateY en
/etc/ssh/sshd_config(o un fichero en/etc/ssh/sshd_config.d/), al principio:TrustedUserCAKeys /etc/ssh/ca_rescate.pub AuthorizedPrincipalsFile /etc/ssh/principales_rescateComprueba y recarga:
sudo sshd -t && sudo systemctl reload ssh. El usuariorescateno tiene contraseña y solo acepta certificados de tu CA, y solo desde tu IP si pusistefrom=.Prepara la máquina Windows
Windows Server 2019 y posteriores traen OpenSSH como característica opcional. En PowerShell como administrador:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0, arranca el serviciosshdy abre el puerto 22 en el cortafuegos de Windows y en el de Lightsail o EC2 (solo para tu IP). Crea el usuario sin contraseña conNew-LocalUser rescate -NoPassword, mételo en Administrators, y enC:\ProgramData\ssh\sshd_configpon las mismas dos líneas que en Linux (las rutas con__PROGRAMDATA__/ssh/). Reiniciasshd. Si quieres que al entrar salga PowerShell en vez de cmd, fija la clave de registroHKLM:\SOFTWARE\OpenSSH\DefaultShellapowershell.exe.Prueba la puerta antes de necesitarla
Genera una clave normal y fírmala con la CA por cinco minutos:
ssh-keygen -t ed25519 -f temporal -N "" ssh-keygen -s ca_rescate -I "prueba" -n rescate -V +5m temporal.pub ssh -i temporal rescate@IP.DE.LA.MAQUINA sudo -n true && echo OKSi ves OK, la puerta funciona. Pasados cinco minutos el certificado deja de valer solo: no hay nada que revocar ni borrar.
Si ya has perdido el acceso: qué hacer con la puerta abierta
Entra con un certificado nuevo y arregla al administrador: en Linux
sudo passwd ubuntu(o el usuario que sea) o añade tu clave pública nueva a su~/.ssh/authorized_keys; en Windowsnet user Administrator NUEVA-CONTRASEÑA. Si la cuenta estaba bloqueada,sudo passwd -u usuarioonet user usuario /active:yes.Y si no tenías puerta de emergencia
Linux en Lightsail: la consola web de Lightsail entra con una clave temporal, así que desde ahí puedes hacer lo del paso anterior. Windows en Lightsail: la consola te da la contraseña de Administrator solo si nadie la cambió; si no, toca crear una instantánea y una máquina nueva. EC2: el procedimiento oficial AWSSupport-ResetAccess de Systems Manager restablece la contraseña o la clave parando y arrancando la máquina.
Qué puede salir mal
"Permission denied" aunque el certificado es correcto
Casi siempre es el from=: estás entrando desde otra IP. O el usuario tiene el campo de contraseña bloqueado con ! (lo deja useradd por defecto en algunos sistemas): ponle * con usermod -p "*".
La máquina ya usaba TrustedUserCAKeys
Entonces otra autoridad ya firma certificados para esa máquina. No pongas la segunda sin saber qué hace la primera: pregunta a quien la configuró, o añade tu principal a su fichero de principales.
Alguien borró el usuario de rescate
Quien es administrador puede quitarlo, es inevitable. La defensa es comprobarlo cada día (una conexión de prueba) y avisar si falla, para rehacerlo mientras todavía tienes acceso.
¿Y si me roban la CA?
Quien tenga la CA puede fabricar certificados para todas tus máquinas. Por eso va en un gestor de contraseñas y no en un correo, y por eso el from= importa: sin tu IP, la CA sola no sirve. Si sospechas, genera otra CA y repite el paso de preparación en cada máquina.
En Simplio
En Simplio, cada tarjeta de máquina tiene el botón Rescate. "Proteger" crea en la máquina el usuario simplio-rescate sin contraseña, que solo acepta certificados de cinco minutos firmados por Simplio y, si está configurado, solo desde la IP de Simplio. Si pierdes el acceso, con tu código del doble factor (también si eres administrador) entras como ese usuario o pides directamente una contraseña nueva para el administrador, que se muestra una sola vez y no se guarda. Simplio comprueba cada día que el usuario sigue funcionando y te avisa si alguien lo ha quitado.
Lo mismo, en AWS y en Simplio
| En la consola de AWS | En Simplio | |
|---|---|---|
| Preparar la puerta | Crear la CA, el usuario, sudo, los dos ficheros y las directivas de SSH en cada máquina, a mano | Un botón "Proteger" en la tarjeta: Simplio lo hace por SSH (Linux) o te da el script para pegar una vez (Windows) |
| Guardar la CA | Tú, en un gestor de contraseñas | En el servidor de Simplio, en el fichero de secretos; las máquinas solo aceptan al usuario de rescate desde la IP de Simplio |
| Usarla | Firmar un certificado a mano y entrar por SSH | Doble factor, certificado de cinco minutos automático, y acciones guiadas: contraseña nueva (se muestra una vez), clave pública, desbloquear |
| Saber que sigue funcionando | Acordarte de probarla | Comprobación diaria y aviso si la máquina ha perdido su usuario de rescate |