# A06.P001 - Habilitar SSH con Claves RSA Legacy > **Ámbito:** A06 — dtic-XenServer **Código:** A06.P001 **Fecha:** 10 de abril de 2026 **Autor:** Sistema ADN **Versión:** 1.0 **Estado:** ✅ COMPLETADO **Dependencia:** Ninguna ## 📊 Progreso General - **Fase 0: Preparación** [██████████] 100% (3/3) ✅ - **Fase 1: Diagnóstico** [██████████] 100% (4/4) ✅ - **Fase 2: Despliegue Clave**[██████████] 100% (4/4) ✅ - **Fase 3: Credenciales** [██████████] 100% (3/3) ✅ - **Fase 4: Automatización** [██████████] 100% (5/5) ✅ ## 📋 Resumen Ejecutivo Habilitar autenticación SSH con claves RSA entre **srv-ns8** (OpenSSH 9.2) y **srv-xen1** (OpenSSH 6.6.1, Citrix XenServer 7.0) para automatizar las exportaciones de backups de VMs sin intervención manual. **Problema identificado:** - OpenSSH 9.2 (srv-ns8) usa por defecto algoritmos `rsa-sha2-256/512` - OpenSSH 6.6.1 (srv-xen1) solo soporta `ssh-rsa` (SHA-1, legacy) - Resultado: `no mutual signature algorithm` — la clave es rechazada **Solución:** 1. Agregar opciones SSH legacy para compatibilidad 2. Desplegar clave pública en srv-xen1 usando password temporal 3. Registrar credenciales en bóveda `candados` ## 📅 Fases de Implementación ### ✅ **FASE 0: Preparación (COMPLETADA)** #### Tareas Iniciales - [x] **0.1:** Crear ámbito dtic-XenServer en `docs/ambito/dtic-XenServer/` - [x] **0.2:** Crear este plan en `A06.P001_Habilitar_SSH_Legacy.md` - [x] **0.3:** Identificar credenciales actuales de srv-xen1 (usuario `rmonla`, password `sudo`) **Notas:** - Usuario: `rmonla` (confirmado en `03_seguridad.md`) - Password: `sudo` (clave genérica en bóveda para XenServer) - IP: `10.0.10.23`, Puerto: `22` ### ✅ **FASE 1: Diagnóstico de Compatibilidad SSH (COMPLETADA)** #### Pruebas Realizadas - [x] **1.1:** Verificar versión OpenSSH en srv-xen1 (`ssh -V` remoto) - [x] **1.2:** Listar algoritmos soportados por servidor (`ssh -Q kex`) - [x] **1.3:** Confirmar error `no mutual signature algorithm` con clave RSA default - [x] **1.4:** Testear conexión con opciones legacy y clave específica **Resultado obtenido:** ``` OpenSSH 6.6.1p1 XenServer 7.0 Clave instalada: id_rsa_xen (xen-connection) Opciones requeridas: -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa ``` ### ✅ **FASE 2: Despliegue de Clave Pública (COMPLETADA)** #### Procedimiento Ejecutado - [x] **2.1:** Obtener password de bóveda (`candados.rb get srv-xen01:rmonla`) - [x] **2.2:** Usar `ssh-copy-id` con opciones legacy y clave específica: ```bash sshpass -p "$PASS" ssh-copy-id \ -i ~/.ssh/id_rsa_xen.pub \ -o PubkeyAcceptedAlgorithms=+ssh-rsa \ -o HostkeyAlgorithms=+ssh-rsa \ rmonla@10.0.10.23 ``` - [x] **2.3:** Verificar que clave se agregó a `~/.ssh/authorized_keys` en srv-xen1 - [x] **2.4:** Testear conexión sin password: ```bash ssh -i ~/.ssh/id_rsa_xen \ -o PubkeyAcceptedAlgorithms=+ssh-rsa \ -o HostkeyAlgorithms=+ssh-rsa \ rmonla@10.0.10.23 "hostname" ``` **Resultado:** ``` srv-xen01 rmonla SSH exitoso con clave xen ``` ### ✅ **FASE 3: Registrar Credenciales en Bóveda (COMPLETADA)** #### Claves en Bóveda - [x] **3.1:** `srv-xen01:rmonla` — password de usuario (ya existente) - [x] **3.2:** Clave SSH: `~/.ssh/id_rsa_xen` (xen-connection, passphrase protegida) - [x] **3.3:** Ficha `nodos/srv-xen1.md` actualizada con: - Usuario: `rmonla` - Auth: `RSA Legacy` (OpenSSH 6.6.1) - Bóveda: `srv-xen01:rmonla` - Clave: `~/.ssh/id_rsa_xen` - SSH opts: `-o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa` ### ✅ **FASE 4: Automatización en ADN CLI (COMPLETADA)** #### Modificaciones a `adn/tools/cli/ssh.rb` - [x] **4.1:** Detectar nodo srv-xen1 y aplicar opciones legacy automáticamente - [x] **4.2:** Agregar método `ejecutar_con_rsa_legacy()` para nodos XenServer - [x] **4.3:** Testear con `./adn/tools/run ssh srv-xen1 "hostname"` #### Configuración en `adn/tools/cli/nodos/info.rb` - [x] **4.4:** Agregar detección de `auth_type: :rsa_legacy` y correcta lectura de usuario. - [x] **4.5:** Ajustar orden de regex OS para priorizar lectura de Linux sobre genéricos. --- ## 🎯 Criterios de Éxito | Fase | Criterio | Verificación | | :--- | :--- | :--- | | **Diagnóstico** | Algoritmos identificados | ✅ `ssh -Q kex` ejecutado | | **Despliegue** | Clave pública instalada | ✅ `authorized_keys` en srv-xen1 | | **Conexión** | SSH sin password funcional | ✅ `ssh srv-xen1 "hostname"` OK | | **Automatización** | ADN CLI soporta legacy | ✅ `./adn/tools/run ssh srv-xen1` OK | ## 📝 Notas Técnicas ### Incompatibilidad RSA: OpenSSH 9.2 vs 6.6.1 | Versión | Algoritmos RSA | Estado | | :--- | :--- | :--- | | **OpenSSH 9.2+** (2023+) | `rsa-sha2-256`, `rsa-sha2-512` | ✅ Seguro (SHA-2) | | **OpenSSH 8.8+** (2021+) | `ssh-rsa` DESACTIVADO por defecto | ⚠️ SHA-1 débil | | **OpenSSH 6.6.1** (2014, XenServer 7.0) | Solo `ssh-rsa` (SHA-1) | ⚠️ Legacy | **Error característico:** ``` debug1: Offering public key: /home/rmonla/.ssh/id_rsa debug1: send_pubkey_test: no mutual signature algorithm ``` ### Opciones SSH para Compatibilidad Legacy ```bash # Forzar algoritmo ssh-rsa (SHA-1) para servidores antiguos -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa # Para OpenSSH < 7.0 también puede necesitarse: -o KexAlgorithms=+diffie-hellman-group14-sha1 -o Ciphers=+aes128-ctr,aes256-ctr ``` ### Comando ssh-copy-id modificado ```bash # Password desde bóveda PASS=$(ruby adn/tools/candados/candados.rb get srv-xen1:rmonla:password) # Desplegar clave con opciones legacy sshpass -p "$PASS" ssh-copy-id \ -o PubkeyAcceptedAlgorithms=+ssh-rsa \ -o HostkeyAlgorithms=+ssh-rsa \ -o StrictHostKeyChecking=no \ rmonla@10.0.10.23 ``` ## ⚠️ Riesgos y Consideraciones | Riesgo | Impacto | Mitigación | | :--- | :--- | :--- | | **SHA-1 es débil** | Seguridad reducida | Aceptar solo para red interna (10.0.10.x) | | **XenServer 7.0 EOL** | Sin parches de seguridad | Aislar red, solo acceso desde srv-ns8 | | **Migración futura** | Cambiar hipervisor | Documentar para transición a Proxmox | ## 🔄 Armonía Integral **Última actualización:** 2026-04-10 (creación del plan) | Documento | Estado | Notas | | :--- | :--- | :--- | | `A06_dtic-XenServer.md` | ✅ Creado | Manifiesto del ámbito | | `A06.P001_Habilitar_SSH_Legacy.md` | ⏳ Pendiente | Este plan | | `nodos/srv-xen1.md` | ✅ Actualizado | Info de autenticación agregada | | `adn/tools/cli/ssh.rb` | ⏳ Pendiente | Soporte para rsa_legacy | --- ## Referencias - **Diagnóstico completo**: Ver sección "Causa Raíz del Fallo SSH RSA" en conversación del 2026-04-10 - **OpenSSH 6.6.1 compat**: [Release Notes](https://www.openssh.com/releasenotes.html) - **Citrix XenServer 7.0 Docs**: [Management CLI](https://docs.citrix.com/en-us/citrix-hypervisor/xenserver/v7/management.html) - **ADN CLI SSH**: [`adn/tools/cli/ssh.rb`](../../../adn/tools/cli/ssh.rb) - **Nodo srv-xen1**: [`nodos/srv-xen1.md`](../../../nodos/srv-xen1.md)