Volver a la wiki

Herencia de credenciales SSH en Terminal desde Auto-Provision

Descripción general

En s114 (2026-06-08), el Terminal ahora hereda automáticamente las credenciales SSH que se proporcionan durante el descubrimiento Auto-Provision. Antes, esas credenciales se usaban solo para verificar conectividad durante el discovery y luego se descartaban, obligando al usuario a re-teclearlas en Terminal.

Cambio de comportamiento:

Flujo técnico

1. Persistencia en Auto-Provision (provision_stages.py)

Cuando provision_device() ejecuta discover_ssh() y el SSH tiene éxito:

2. Nuevo endpoint de descifrado (GET /auto-provision/profiles/{profile_id}/credentials)

3. Integración en Terminal UI (terminal.js)

La función quickConnectHost() ahora es async:

async quickConnectHost(ip, name, profileId, hasStored) {
  // ... pre-rellena IP y puerto ...
  if (hasStored && profileId) {
    const creds = await ApiService.get(`/api/network/auto-provision/profiles/${profileId}/credentials`);
    if (creds.has_credentials) {
      document.getElementById('manual-ssh-username').value = creds.username;
      document.getElementById('manual-ssh-password').value = creds.password;
    }
  }
  this.openManualConnectionModal();
}

4. Contexto en la plantilla (templates/terminal/index.html)

Los dispositivos detectados ahora exponen:

Se actualiza el atributo data-args de los elementos:

<li data-action="TerminalApp.quickConnectHost" 
    data-args='["10.5.5.5", "Router-A", 123, true]'>

Cifrado de credenciales

Las credenciales se cifran con la misma estrategia que el management_config de racks:

Seguridad:

Migración de base de datos

Migración aplicada: network/0047 (2026-06-08 10:52).

migrations.AddField(model_name='deviceprofile', name='ssh_username', ...)
migrations.AddField(model_name='deviceprofile', name='ssh_password_encrypted', ...)

Retrocompatibilidad: Los dispositivos ya existentes no heredan automáticamente credenciales antiguas (nunca se guardaron). Para que uno existente tenga credenciales, hay que re-ejecutar Auto-Provision con las claves en ese dispositivo.

Testing

Test suite: tests/api/test_terminal_hosts.py::TestProfileSshCredentials:

Impacto en UX

Para el usuario final:

  1. Descubre un dispositivo en Auto-Provision → ingresa credenciales SSH.
  2. Si SSH funciona, se guardan automáticamente.
  3. En Terminal, elige el dispositivo detectado → se pre-rellena usuario/contraseña → escribe comando.
  4. Ahorro: ~30 segundos por conexión si hay 10 dispositivos.

Titulares en RELEASE_NOTES (s114):

Ahora hereda las credenciales SSH que diste en Auto-Provision… Si el SSH funcionó durante el descubrimiento, esas credenciales se guardan cifradas. Al conectarte desde el Terminal a ese dispositivo, vienen ya rellenadas.

Véase también

Subir