Qué hace este módulo #
SSH es la puerta de entrada a tu servidor: el canal cifrado por el que te conectas para administrarlo. Que esa puerta esté bien puesta —con las llaves adecuadas y sin cerraduras de más— es lo que separa un servidor seguro de uno expuesto.
El módulo ssh reúne en un solo comando las tareas de ese acceso remoto: gestiona las claves autorizadas del usuario (añadir, listar, quitar), controla las host keys con las que el servidor se identifica ante los clientes, muestra las sesiones activas y comprueba o reaplica el hardening de sshd definido en tu configuración. Cada operación que toca sshd valida antes la configuración (sshd -t) para que un cambio equivocado no te deje fuera.
Ten a mano una sesión abierta mientras cambias claves o reinicias sshd: así, si algo sale mal, sigues dentro para corregirlo. El módulo trabaja por defecto sobre el usuario gestionado ubuntu; usa --user para operar sobre otro.
Tareas comunes #
Elige lo que quieres hacer. Cada receta trae el comando ya escrito — solo cambia el usuario o la clave por los tuyos, y pulsa Copiar.
1
Ver el estado del acceso SSH
Comprueba de un vistazo que sshd está activo y bien configurado.
Conéctate por SSH a tu servidor con el usuario ubuntu y lanza:
$ sudo imaxe ssh status¿Lo necesitas para un script? Añade --json y obtendrás la misma información legible por máquina:
$ sudo imaxe ssh status --jsonsshd está activo, en qué puerto escucha y un resumen del hardening aplicado.2
Añadir o quitar una clave autorizada
Da acceso a una nueva máquina o revoca una que ya no uses.
Primero mira qué claves están autorizadas ahora mismo para el usuario gestionado:
$ sudo imaxe ssh keys listAñade una clave pública pasándola como argumento (o usa - para leerla de la entrada estándar):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"¿Ya no la necesitas? Quítala por su fingerprint o por su comentario:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys del usuario queda actualizado. Comprueba el resultado con keys list.3
Regenerar las host keys tras clonar
Imprescindible después de crear una máquina a partir de una AMI.
Cuando clonas una imagen, todas las copias heredan la misma identidad de servidor. Genera unas host keys nuevas y únicas para esta máquina:
$ sudo imaxe ssh hostkeys regenerate --yes4
Revisar y reaplicar el hardening
Comprueba que sshd sigue configurado como debe y corrígelo si no.
Compara el hardening actual con el deseado (el que define tu configuración):
$ sudo imaxe ssh harden show¿Hay diferencias? Reaplica el hardening desde el YAML y recarga sshd de forma segura:
$ sudo imaxe ssh harden reapplysshd se recarga sin cortar tu sesión.5
Ver sesiones y reiniciar sshd
Mira quién está conectado y aplica cambios sin miedo a quedarte fuera.
Lista las sesiones SSH activas en este momento:
$ sudo imaxe ssh sessionsPara aplicar cambios de configuración, prefiere reload (no corta conexiones); usa restart solo si hace falta un reinicio completo. Ambos validan la configuración antes:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartAntes de reiniciar sshd o cambiar el puerto, mantén abierta una segunda sesión de emergencia. Si al reconectar aparece un aviso de host key distinta tras un hostkeys regenerate, es esperado: acepta la nueva identidad.
Sinopsis #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]Las operaciones que leen o modifican sshd, las claves autorizadas o las host keys requieren privilegios de root (usa sudo). Los grupos keys, hostkeys y harden agrupan sus propios subcomandos anidados. Añade --json a status, sessions, keys list o harden show para obtener salida apta para scripting.
Subcomandos #
| Subcomando | Qué hace | Flags relevantes |
|---|---|---|
| status | Estado de sshd: activo, puerto y resumen del hardening. | --json |
| keys list | Lista las claves autorizadas del usuario gestionado. | --user, --json |
| keys add | Añade una clave pública (desde argumento o stdin). | --user, --comment |
| keys remove | Quita una clave por fingerprint o comentario. | --user |
| hostkeys regenerate | Regenera las host keys (crítico tras clonar una AMI; cambia el fingerprint). | --yes |
| sessions | Lista las sesiones SSH activas. | --json |
| harden show | Muestra el hardening actual frente al deseado. | --json |
| harden reapply | Reaplica el hardening desde el YAML y recarga sshd. | — |
| restart | Reinicia sshd validando antes la configuración (sshd -t). | — |
| reload | Recarga sshd validando antes la configuración (sshd -t). | — |
Argumentos y flags #
| Argumento / Flag | Tipo | Por defecto | Descripción |
|---|---|---|---|
| <clave> req. | string | — | En keys add: la clave pública, o - para leerla de stdin. |
| <selector> req. | string | — | En keys remove: fingerprint (SHA256:...) o comentario de la clave a quitar. |
| --user | string | ubuntu | Usuario cuyo authorized_keys se consulta o modifica (en keys list/add/remove). |
| --comment | string | — | En keys add: comentario que se asocia a la clave para identificarla luego. |
| --yes | bool | false | En hostkeys regenerate: confirma sin preguntar (cambia el fingerprint visible a los clientes). |
| --json | bool | false | En status, sessions, keys list y harden show: emite el resultado como JSON en stdout. |
Ficheros y rutas #
| Ruta | Contenido |
|---|---|
| /etc/imaxe/ssh.yml | Configuración del módulo: puerto, políticas de login (root, contraseña, clave pública), usuarios permitidos, usuario gestionado y regeneración de host keys. |
| /home/<usuario>/.ssh/authorized_keys | Claves públicas autorizadas del usuario gestionado que keys add/remove modifican. |
| /etc/ssh/sshd_config.d/ | Fragmentos de configuración de sshd donde se aplica el hardening. |
| /etc/ssh/ssh_host_*_key | Host keys que identifican al servidor y que hostkeys regenerate renueva. |
Ejemplo de ssh.yml:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueCódigos de salida y logs #
Cada ejecución devuelve un código que puedes comprobar con echo $? — útil para encadenar en scripts:
sshd -t falló; no se aplicó nada.Sigue el log del servicio en vivo mientras depuras:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonResolución de problemas #
| Síntoma | Causa probable | Solución |
|---|---|---|
| Sale CONFIG (código 3) | El hardening o un cambio manual dejaron sshd con una configuración inválida. | Revisa el diff con imaxe ssh harden show y corrige; la validación evita aplicar un config roto. |
| Al reconectar, aviso de host key distinta | Se regeneraron las host keys (esperado tras clonar una AMI). | Es normal: acepta la nueva identidad en el cliente y actualiza tu known_hosts. |
keys add devuelve NOTFOUND (código 4) | El usuario indicado en --user no existe en el sistema. | Comprueba el nombre de usuario o usa el gestionado por defecto (ubuntu). |
| Ya no puedo entrar con contraseña | password_authentication está en "no" por el hardening. | Es intencionado: entra con clave pública y gestiónalas con imaxe ssh keys. |
¿Te atascaste con el módulo SSH?
Escríbenos con la salida de «imaxe <módulo> status --json» y te respondemos rápido.