macOS Tahoe 26.3 Rompió SSH: Cambios de Sensibilidad a Mayúsculas, Eliminación de Claves DSA y Guía Completa de Solución
macOS Tahoe 26.3 cambió silenciosamente el manejo de nombres de usuario SSH a sensible a mayúsculas y deshabilitó las claves ssh-dss. Guía completa para reparar conexiones SSH, actualizar configuraciones y migrar a claves Ed25519.
Apple lanzó macOS Tahoe 26.3 el 11 de febrero de 2026 y, para miles de desarrolladores y administradores de sistemas, las conexiones SSH se rompieron de inmediato. Sin diálogo de advertencia. Sin asistente de migración. Sin nota de versión que lo señalara. Un día podía usar ssh administrator@yourserver y al día siguiente recibía Connection closed by 10.10.83.28 port 22. Si dependía de claves DSA para autenticarse contra infraestructura heredada, estas dejaron de funcionar por completo. Esta guía explica exactamente qué cambió, por qué sucedió y cómo reparar cada flujo de trabajo afectado, desde sesiones interactivas hasta pipelines de CI/CD automatizados.
Puntos Clave
- macOS Tahoe 26.3 aplica nombres de usuario SSH sensibles a mayúsculas. Escribir
administratoren lugar deAdministratorresulta en un cierre de conexión inmediato sin solicitud de contraseña. - Las claves ssh-dss (DSA) han sido eliminadas permanentemente. OpenSSH 10.0, incluido con Tahoe 26.3, eliminó el soporte DSA completamente desde la compilación. No hay opción de configuración para volver a habilitarlo.
- Ahora aparecen advertencias de intercambio de claves post-cuántico al conectarse a servidores que no admiten
mlkem768x25519-sha256osntrup761x25519-sha512. - Ed25519 es el tipo de clave recomendado para todas las claves SSH nuevas. Es más rápido, más seguro y produce firmas más pequeñas que RSA.
- Se debe auditar cada archivo
~/.ssh/configpara detectar discrepancias de mayúsculas en las directivasUsery cualquier referencia assh-dssenHostKeyAlgorithmsoPubkeyAcceptedAlgorithms.
Tabla de Contenidos
- Qué Cambió Exactamente en SSH de macOS Tahoe 26.3
- Diagnóstico de Fallas de Conexión SSH Después de la Actualización
- Entendiendo el Cambio de Sensibilidad a Mayúsculas
- Entendiendo la Eliminación de Claves DSA
- Advertencias de Intercambio de Claves Post-Cuántico
- Solución Paso a Paso: Problemas de Sensibilidad a Mayúsculas
- Solución Paso a Paso: Migración de DSA a Ed25519
- Guía Completa de Auditoría de Configuración SSH
- Cambios en el Agente SSH e Integración con Keychain
- Impacto en Pipelines CI/CD y Automatización
- Impacto en Flujos de Trabajo de Desarrollo Remoto
- Soluciones Alternativas para Infraestructura Heredada
- Mejores Prácticas de Seguridad SSH para 2026
- Preguntas Frecuentes
- Conclusión
Qué Cambió Exactamente en SSH de macOS Tahoe 26.3
macOS Tahoe 26.3 incluye OpenSSH 10.0, que introduce tres cambios que rompen los flujos de trabajo SSH diarios. Apple no destacó ninguno de estos en las notas de versión orientadas al usuario, dejando a los desarrolladores descubrirlos a través de conexiones fallidas.
Cambio 1: Coincidencia de Nombres de Usuario Sensible a Mayúsculas
Antes de Tahoe 26.3, el cliente SSH en macOS era permisivo con las mayúsculas de los nombres de usuario. Podía conectarse con ssh administrator@server, ssh Administrator@server o incluso ssh ADMINISTRATOR@server, y el servidor remoto resolvería correctamente el nombre de usuario siempre que el sistema operativo subyacente pudiera encontrar la cuenta. Después de la actualización, el cliente SSH aplica una coincidencia estricta de mayúsculas antes de que la conexión se establezca por completo. Si las mayúsculas no coinciden con lo que espera el servidor remoto, la conexión se cierra inmediatamente, antes de que se complete la autenticación por contraseña o el intercambio de claves.
Cambio 2: Eliminación Completa de DSA (ssh-dss)
OpenSSH ha estado deprecando DSA desde la versión 7.0 en 2015. La deprecación siguió una línea de tiempo clara:
| Fecha | Versión OpenSSH | Estado DSA |
|---|---|---|
| 2015 | 7.0 | Deshabilitado por defecto, rehabilitable vía config |
| 2024 | 9.x | Opcional en tiempo de compilación, habilitado por defecto |
| Mediados de 2024 | 9.x | Opcional en tiempo de compilación, deshabilitado por defecto |
| Abril 2025 | 10.0 | Eliminado completamente del código fuente |
| Febrero 2026 | 10.0 (macOS Tahoe 26.3) | Enviado a todos los usuarios de macOS |
Con macOS Tahoe 26.3, no existe la solución alternativa PubkeyAcceptedAlgorithms +ssh-dss. El algoritmo no está presente en el binario. Cualquier configuración SSH que haga referencia a ssh-dss producirá un error Bad key types.
Cambio 3: Advertencias de Intercambio de Claves Post-Cuántico
OpenSSH 10.0 introdujo una advertencia que se activa al conectarse a servidores que no admiten algoritmos de intercambio de claves post-cuántico. La advertencia dice:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Si bien se trata de una advertencia y no de un fallo definitivo, crea ruido en la salida del terminal y puede romper scripts automatizados que analizan la salida SSH.
Qué No Cambió
Vale la pena señalar lo que sigue igual:
- Las claves RSA continúan funcionando (con algoritmos de firma
rsa-sha2-256yrsa-sha2-512) - Las claves ECDSA continúan funcionando (aunque Ed25519 es la preferida)
- El reenvío de puertos SSH, los túneles y ProxyJump funcionan de manera idéntica
- El formato del archivo
~/.ssh/known_hostsno ha cambiado
Si es nuevo en SSH en macOS o está configurando un entorno de desarrollo desde cero, nuestra guía de configuración de desarrollador de macOS Tahoe cubre la configuración inicial completa.
Diagnóstico de Fallas de Conexión SSH Después de la Actualización
Antes de realizar cualquier cambio, debe determinar cuál de los tres problemas está afectando sus conexiones. La salida detallada de SSH es su principal herramienta de diagnóstico.
Paso 1: Habilitar Salida SSH Detallada
Ejecute su comando SSH fallido con indicadores de triple verbosidad para ver la negociación completa del protocolo de enlace:
ssh -vvv user@hostname
Esto produce una salida detallada que muestra cada etapa de la conexión. Busque estos patrones específicos:
Patrón de falla por sensibilidad a mayúsculas:
debug1: Connecting to 10.10.83.28 [10.10.83.28] port 22.
debug1: Connection established.
debug1: identity file /Users/you/.ssh/id_ed25519 type 3
debug3: receive packet: type 7
Connection closed by 10.10.83.28 port 22
El indicador clave es que la conexión se cierra después de establecerse pero antes de cualquier intento de autenticación. No hay mensaje de "Permission denied": la conexión simplemente se cae.
Patrón de falla de clave DSA:
/Users/you/.ssh/config line 15: Bad key types '+ssh-dss'.
o:
Bad key types '+ssh-rsa,ssh-dss'
Este error aparece inmediatamente cuando el cliente SSH analiza su archivo de configuración, antes de cualquier intento de conexión.
Patrón de advertencia post-cuántico:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Esto aparece durante el intercambio de claves pero no impide que la conexión se complete.
Paso 2: Verificar la Versión del Cliente SSH
Verifique qué versión de OpenSSH se está ejecutando:
ssh -V
Salida esperada en macOS Tahoe 26.3:
OpenSSH_10.0p1, LibreSSL 3.3.6
Si ve una versión más antigua, puede tener un OpenSSH instalado por Homebrew con mayor prioridad. Verifique qué binario se está utilizando:
which ssh
El SSH del sistema está en /usr/bin/ssh. Si ve /opt/homebrew/bin/ssh o /usr/local/bin/ssh, está usando una versión de Homebrew que puede comportarse de manera diferente.
Paso 3: Probar con Parámetros Explícitos
Aísle el problema probando con mayúsculas de nombre de usuario y tipo de clave explícitos:
# Probar sensibilidad a mayúsculas - intentar ambas variantes
ssh -vvv Administrator@hostname
ssh -vvv administrator@hostname
# Probar sin interferencia del archivo de configuración
ssh -F /dev/null -vvv user@hostname
# Probar con una clave específica
ssh -vvv -i ~/.ssh/id_ed25519 user@hostname

Paso 4: Revisar la Configuración SSH en Busca de Errores
Analice su archivo de configuración para identificar líneas que hagan referencia a algoritmos obsoletos:
# Verificar cualquier referencia ssh-dss
grep -n "ssh-dss" ~/.ssh/config
# Verificar referencias ssh-dss en la configuración del sistema
grep -n "ssh-dss" /etc/ssh/ssh_config
# Verificar todas las directivas User para revisar mayúsculas
grep -n "User " ~/.ssh/config
Para una comprensión más profunda del uso de Terminal en macOS Tahoe, consulte nuestra guía de Terminal de macOS Tahoe.
Entendiendo el Cambio de Sensibilidad a Mayúsculas
Por Qué Este Cambio Rompe las Conexiones
En la mayoría de los sistemas similares a Unix, los nombres de usuario son sensibles a mayúsculas a nivel del sistema operativo. Un usuario llamado Administrator es técnicamente una cuenta diferente de administrator. Sin embargo, el protocolo SSH mismo (RFC 4252) establece que los nombres de usuario son "sensibles a mayúsculas" pero reconoce que las implementaciones de servidor pueden elegir manejar esto de manera diferente.
Antes de macOS Tahoe 26.3, el cliente SSH de macOS era permisivo. Cuando escribía ssh administrator@server, el cliente enviaba el nombre de usuario tal cual, y muchos servidores SSH (particularmente los que se ejecutan en Windows, macOS o dispositivos de red) normalizaban las mayúsculas durante la autenticación. La conexión tenía éxito porque el servidor hacía el trabajo de hacer coincidir administrator con la cuenta Administrator.
Con OpenSSH 10.0, el cliente SSH en macOS ahora realiza una verificación previa a la autenticación más estricta. Si el servidor devuelve un mensaje de protocolo temprano que indica una discrepancia de mayúsculas, la conexión se termina antes de que proceda la autenticación. Esto significa:
- Las conexiones a servidores Windows (que históricamente normalizaban las mayúsculas) pueden romperse
- Las conexiones a dispositivos de red (enrutadores, switches, dispositivos NAS) que usan nombres de usuario sin distinción de mayúsculas pueden romperse
- Las conexiones a servidores macOS donde la cuenta de administrador es
Administrator(A mayúscula) pero los scripts usanadministrator(a minúscula) se romperán - Las conexiones a servidores Linux tienen menos probabilidades de verse afectadas ya que los nombres de usuario de Linux ya son sensibles a mayúsculas
Escenarios Comunes que Se Rompen
Escenario 1: Gestión Remota de macOS a macOS
Muchos administradores de sistemas se conectan a Macs remotas usando:
ssh [email protected]
Pero la cuenta de administrador predeterminada de macOS se crea como Administrator con A mayúscula. Esto funcionaba antes de Tahoe 26.3 y falla después.
Escenario 2: Gestión de Dispositivos de Red
Conectarse a enrutadores, switches, firewalls y dispositivos NAS a menudo usa nombres de usuario genéricos:
ssh [email protected]
ssh [email protected]
Si el dispositivo almacena el nombre de usuario como Admin o ROOT, estas conexiones ahora fallarán silenciosamente.
Escenario 3: Alias de Configuración SSH
Muchos desarrolladores tienen entradas de configuración SSH con mayúsculas incorrectas que anteriormente funcionaban:
# ~/.ssh/config - esto puede romperse ahora
Host production
HostName prod.example.com
User deploy # El servidor espera "Deploy"
IdentityFile ~/.ssh/prod_key
Entendiendo la Eliminación de Claves DSA
El Argumento de Seguridad Contra DSA
DSA (Algoritmo de Firma Digital) tal como se implementa en SSH usa una longitud de clave fija de 1024 bits y SHA-1 para el hashing. Esta combinación proporciona aproximadamente 80 bits de seguridad simétrica, muy por debajo del mínimo de 128 bits recomendado por los estándares de seguridad modernos.
Las debilidades específicas de las claves DSA:
| Propiedad | DSA (ssh-dss) | Ed25519 | RSA-4096 |
|---|---|---|---|
| Tamaño de clave | 1024 bits | 256 bits | 4096 bits |
| Algoritmo hash | SHA-1 | SHA-512 | SHA-256/512 |
| Nivel de seguridad | ~80 bits | ~128 bits | ~128 bits |
| Tamaño de firma | 40 bytes | 64 bytes | 512 bytes |
| Velocidad de firma | Lenta | Rápida | Moderada |
| Velocidad de verificación | Lenta | Rápida | Moderada |
| Vulnerabilidad a sesgos | Alta | Ninguna | Ninguna |
DSA es particularmente vulnerable a fallas de implementación. Si el generador de números aleatorios utilizado durante la firma tiene algún sesgo, la clave privada puede recuperarse a partir de un pequeño número de firmas. Esto ha sido explotado en ataques del mundo real.
Qué Significa "Eliminado" Realmente
En versiones anteriores de macOS, DSA estaba deshabilitado por defecto pero podía rehabilitarse con opciones de configuración:
# Esto funcionaba en macOS Sequoia y versiones anteriores
Host legacy-server
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedAlgorithms +ssh-dss
En macOS Tahoe 26.3, estas líneas de configuración en sí mismas causan errores porque el binario SSH ya no reconoce ssh-dss como un identificador de algoritmo válido. El error es:
/Users/you/.ssh/config line 8: Bad key types '+ssh-dss'.
Esto significa:
- No puede usar claves DSA para la autenticación (inicio de sesión con clave pública)
- No puede aceptar claves de host DSA de servidores
- No puede ni siquiera hacer referencia a
ssh-dssen sus archivos de configuración sin causar errores - La herramienta
ssh-keygenya no puede generar claves DSA
Verificar si Tiene Claves DSA
Antes de proceder con la migración, verifique sus claves existentes:
# Listar todas las claves SSH con sus tipos
for key in ~/.ssh/*.pub; do
echo "=== $key ==="
ssh-keygen -l -f "$key"
done
Ejemplo de salida:
=== /Users/you/.ssh/id_dsa.pub ===
1024 SHA256:abc123... you@mac (DSA) # Esta clave debe reemplazarse
=== /Users/you/.ssh/id_ed25519.pub ===
256 SHA256:xyz789... you@mac (ED25519) # Esta clave está bien
=== /Users/you/.ssh/id_rsa.pub ===
3072 SHA256:def456... you@mac (RSA) # Esta clave está bien
Cualquier clave identificada como (DSA) debe reemplazarse. Si encuentra una, no la elimine todavía: la necesita para identificar qué servidores la tienen autorizada.
Advertencias de Intercambio de Claves Post-Cuántico
Qué Significa la Advertencia
OpenSSH 10.0 introdujo el intercambio de claves post-cuántico usando el algoritmo ML-KEM (anteriormente CRYSTALS-Kyber) hibridizado con X25519. El algoritmo de intercambio de claves predeterminado ahora es mlkem768x25519-sha256, con sntrup761x25519-sha512 como respaldo.
Al conectarse a un servidor que no admite ninguno de estos algoritmos, OpenSSH muestra:
WARNING: connection is not using a post-quantum key exchange algorithm.
This session may be vulnerable to 'store now, decrypt later' attacks.
Un ataque de "almacenar ahora, descifrar después" significa que un adversario podría registrar su tráfico SSH cifrado hoy y descifrarlo en el futuro cuando las computadoras cuánticas sean capaces de romper los algoritmos clásicos de intercambio de claves.
Cuándo Verá Esta Advertencia
- Al conectarse a servidores que ejecutan OpenSSH 8.x o anterior
- Al conectarse a dispositivos de red con implementaciones SSH integradas
- Al conectarse a instancias en la nube con versiones más antiguas del daemon SSH
- Al conectarse a GitHub, GitLab o Bitbucket (puede o no admitir algoritmos PQ todavía)
Silenciar la Advertencia
Si comprende el riesgo y desea suprimir la advertencia, agregue esto a su ~/.ssh/config:
# Suprimir advertencias post-cuánticas globalmente
Host *
WarnWeakCrypto no
O solo para hosts específicos:
Host legacy-server
HostName 192.168.1.100
WarnWeakCrypto no
La solución ideal es actualizar sus servidores a OpenSSH 9.0 o posterior, que admite sntrup761x25519-sha512, u OpenSSH 9.9+, que admite el más nuevo mlkem768x25519-sha256.
Solución Paso a Paso: Problemas de Sensibilidad a Mayúsculas
Solución 1: Determinar las Mayúsculas Correctas del Nombre de Usuario
Primero, verifique el nombre de usuario exacto en el sistema remoto. El método depende del sistema operativo remoto:
Para servidores remotos Linux/macOS:
# Si aún puede iniciar sesión a través de consola, acceso físico u otro cliente SSH
grep "your_username" /etc/passwd
# O usar el comando id
id
# Ejemplo de salida: uid=501(Administrator) gid=20(staff) groups=...
Para servidores Windows remotos (OpenSSH):
# En PowerShell en la máquina remota
whoami
# Salida: DOMAIN\Administrator
Para dispositivos de red:
Consulte la interfaz de gestión web del dispositivo o la documentación para conocer el formato exacto del nombre de usuario. Patrones comunes:
- Cisco IOS: generalmente minúsculas (
admin) - Juniper: generalmente minúsculas (
root) - Synology NAS: sensible a mayúsculas según se creó
- QNAP NAS: sensible a mayúsculas según se creó
Solución 2: Actualizar su Archivo de Configuración SSH
Abra su configuración SSH y corrija todas las directivas User:
# Abrir el archivo de configuración
nano ~/.ssh/config
Antes (roto):
Host production
HostName prod.example.com
User administrator
IdentityFile ~/.ssh/prod_key
Host nas
HostName nas.local
User admin
Port 22
Después (corregido):
Host production
HostName prod.example.com
User Administrator
IdentityFile ~/.ssh/prod_key
Host nas
HostName nas.local
User Admin
Port 22
Solución 3: Actualizar Alias de Shell y Scripts
Busque comandos SSH en su configuración de shell:
# Verificar alias de bash
grep -n "ssh " ~/.bashrc ~/.bash_profile 2>/dev/null
# Verificar alias de zsh
grep -n "ssh " ~/.zshrc ~/.zprofile 2>/dev/null
# Verificar comandos SSH en scripts personalizados
grep -rn "ssh " ~/scripts/ ~/bin/ 2>/dev/null
Actualice cualquier nombre de usuario codificado para usar las mayúsculas correctas.
Solución 4: Actualizar Variables de Entorno
Algunas herramientas usan variables de entorno para los nombres de usuario SSH:
# Verificar variables de entorno relacionadas con SSH
env | grep -i ssh
env | grep -i user
# Variables comunes a verificar
echo $DEPLOY_USER
echo $SSH_USER
echo $REMOTE_USER
Solución 5: Verificar la Solución
Después de realizar cambios, verifique cada conexión:
# Probar con salida detallada
ssh -v production
# Esperado: autenticación exitosa
# debug1: Authentication succeeded (publickey).
Solución Paso a Paso: Migración de DSA a Ed25519
Esta sección describe el proceso completo de reemplazo de claves DSA con claves Ed25519. Si necesita información básica sobre comandos de Terminal, nuestra guía de dominio del Terminal Mac cubre todos los fundamentos.

Fase 1: Inventariar sus Claves DSA
Antes de generar nuevas claves, documente dónde se usan sus claves DSA:
# Paso 1: Encontrar todas las claves DSA en su sistema
find ~/.ssh -name "*.pub" -exec grep -l "ssh-dss" {} \;
# Paso 2: Para cada clave DSA, verificar qué servidores la autorizan
# Anotar la huella digital de la clave pública
ssh-keygen -l -f ~/.ssh/id_dsa.pub
# Paso 3: Verificar claves de host DSA en known_hosts
grep "ssh-dss" ~/.ssh/known_hosts | awk '{print $1}'
Crear una lista de verificación de migración:
# Crear un archivo de seguimiento de migración
cat > ~/ssh_migration_checklist.txt << 'EOF'
Lista de Verificación de Migración de Clave DSA SSH
===============================
Fecha: $(date)
Claves DSA Encontradas:
- [ ] ~/.ssh/id_dsa -> Usada para: _______________
- [ ] ~/.ssh/id_dsa.pub -> Autorizada en: _______________
Servidores con Claves de Host DSA:
- [ ] server1.example.com
- [ ] 192.168.1.100
Automatización/Scripts que Usan DSA:
- [ ] deploy.sh
- [ ] backup-cron.sh
- [ ] Pipeline CI/CD: _______________
EOF
Fase 2: Generar Nuevas Claves Ed25519
Genere un nuevo par de claves Ed25519 con un comentario significativo:
# Generar clave Ed25519 con comentario descriptivo
ssh-keygen -t ed25519 -C "yourname@macbook-2026-02" -f ~/.ssh/id_ed25519
# Se le pedirá una frase de contraseña - USE UNA
# Una frase de contraseña protege su clave privada si su máquina se ve comprometida
Si necesita claves separadas para diferentes propósitos (recomendado para aislamiento de seguridad):
# Clave para servidores de trabajo
ssh-keygen -t ed25519 -C "work-servers-2026" -f ~/.ssh/id_ed25519_work
# Clave para proyectos personales
ssh-keygen -t ed25519 -C "personal-2026" -f ~/.ssh/id_ed25519_personal
# Clave para automatización CI/CD
ssh-keygen -t ed25519 -C "cicd-automation-2026" -f ~/.ssh/id_ed25519_cicd
Verifique las claves generadas:
# Verificar la nueva clave
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
# Salida esperada:
# 256 SHA256:abcdef123456... yourname@macbook-2026-02 (ED25519)
Fase 3: Desplegar Nuevas Claves en Servidores
Para cada servidor que anteriormente usaba su clave DSA, despliegue la nueva clave pública Ed25519:
Método 1: Usando ssh-copy-id (si aún puede autenticarse)
Si tiene otro método de autenticación funcionando (contraseña, clave diferente):
# Desplegar la nueva clave usando autenticación por contraseña
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
# O especificar una clave funcionando para la autenticación durante el despliegue
ssh-copy-id -i ~/.ssh/id_ed25519.pub -o "IdentityFile=~/.ssh/id_rsa" user@server
Método 2: Despliegue manual (si ssh-copy-id no está disponible)
# Copiar el contenido de la clave pública
cat ~/.ssh/id_ed25519.pub | pbcopy
# Conectarse al servidor usando cualquier método que funcione (contraseña, consola, etc.)
ssh user@server
# En el servidor remoto, agregar la clave
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "PEGAR_SU_CLAVE_PÚBLICA_AQUÍ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Método 3: Para servidores a los que no puede conectarse vía SSH
Si la clave DSA era su único método de autenticación y ya no funciona:
- Use la consola de gestión web del servidor (si está disponible)
- Acceda mediante consola física o IPMI/iLO/iDRAC
- Use un host de salto que todavía tenga acceso
- Contacte al administrador del servidor
Fase 4: Actualizar la Configuración SSH
Reemplace las referencias a claves DSA en su configuración SSH:
# Antes
Host old-server
HostName legacy.example.com
User admin
IdentityFile ~/.ssh/id_dsa
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedAlgorithms +ssh-dss
# Después
Host old-server
HostName legacy.example.com
User Admin
IdentityFile ~/.ssh/id_ed25519_work
Fase 5: Limpiar los Hosts Conocidos
Elimine entradas de claves de host DSA obsoletas:
# Encontrar servidores con claves de host DSA en known_hosts
grep "ssh-dss" ~/.ssh/known_hosts
# Eliminar entradas de host específicas (la clave de host se volverá a aceptar en la próxima conexión)
ssh-keygen -R hostname_or_ip
# O eliminar todas las entradas DSA a la vez
# Primero hacer una copia de seguridad del archivo
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.backup.$(date +%Y%m%d)
# Luego eliminar las entradas DSA
grep -v "ssh-dss" ~/.ssh/known_hosts > ~/.ssh/known_hosts.tmp
mv ~/.ssh/known_hosts.tmp ~/.ssh/known_hosts
Fase 6: Verificar que Todo Funciona
Probar cada conexión de servidor:
# Probar conexiones con salida detallada
ssh -v old-server
# Verificar que se está ofreciendo la clave correcta
# Buscar: debug1: Offering public key: /Users/you/.ssh/id_ed25519_work ED25519
# Ejecutar una prueba de conectividad completa para todos los hosts configurados
for host in $(grep "^Host " ~/.ssh/config | awk '{print $2}' | grep -v '\*'); do
echo "Probando: $host"
ssh -o ConnectTimeout=5 -o BatchMode=yes "$host" echo "OK" 2>&1
echo "---"
done
Fase 7: Retirar la Clave DSA
Una vez que todos los servidores estén migrados y verificados:
# Archivar las claves DSA antiguas (no eliminar inmediatamente)
mkdir -p ~/.ssh/deprecated
mv ~/.ssh/id_dsa ~/.ssh/deprecated/id_dsa.retired.$(date +%Y%m%d)
mv ~/.ssh/id_dsa.pub ~/.ssh/deprecated/id_dsa.pub.retired.$(date +%Y%m%d)
chmod 400 ~/.ssh/deprecated/id_dsa.retired.*
Conserve las claves archivadas durante al menos 90 días en caso de que descubra un servidor que se le pasó por alto.
Guía Completa de Auditoría de Configuración SSH
Después de abordar los problemas individuales, realice una auditoría completa de su configuración SSH. Esto es especialmente importante si ha estado usando SSH en macOS durante años y ha acumulado entradas de configuración a través de múltiples actualizaciones de macOS.
Paso de Auditoría 1: Verificar Algoritmos Obsoletos
# Verificar CUALQUIER referencia a algoritmos obsoletos
echo "=== Verificando ~/.ssh/config ==="
grep -n -E "(ssh-dss|ssh-dsa|diffie-hellman-group1-sha1|diffie-hellman-group14-sha1|hmac-sha1-96|hmac-md5)" ~/.ssh/config 2>/dev/null
echo ""
echo "=== Verificando /etc/ssh/ssh_config ==="
grep -n -E "(ssh-dss|ssh-dsa|diffie-hellman-group1-sha1)" /etc/ssh/ssh_config 2>/dev/null
echo ""
echo "=== Verificando /etc/ssh/ssh_config.d/ ==="
grep -rn -E "(ssh-dss|ssh-dsa)" /etc/ssh/ssh_config.d/ 2>/dev/null
Paso de Auditoría 2: Validar la Sintaxis de Configuración
# Probar la sintaxis de configuración SSH sin conectarse
ssh -G test-host 2>&1 | head -5
# Si hay errores, aparecerán como:
# /Users/you/.ssh/config line X: Bad key types '...'
Paso de Auditoría 3: Revisar Todas las Directivas User
# Extraer todas las directivas User y los hosts a los que se aplican
awk '/^Host /{host=$2} /User /{print host, $0}' ~/.ssh/config
Revise la salida y verifique las mayúsculas de cada nombre de usuario.
Paso de Auditoría 4: Verificar Permisos de Archivos
SSH es estricto con los permisos de archivos. Los permisos incorrectos pueden causar fallas silenciosas:
# Verificar y corregir permisos del directorio SSH
echo "=== Permisos del directorio ==="
ls -la ~/.ssh/
echo ""
echo "=== Permisos esperados ==="
echo "~/.ssh/ -> drwx------ (700)"
echo "~/.ssh/config -> -rw------- (600)"
echo "~/.ssh/id_* -> -rw------- (600) para claves privadas"
echo "~/.ssh/*.pub -> -rw-r--r-- (644) para claves públicas"
echo "~/.ssh/authorized_keys -> -rw------- (600)"
echo "~/.ssh/known_hosts -> -rw-r--r-- (644)"
# Corregir permisos si es necesario
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config 2>/dev/null
chmod 600 ~/.ssh/id_* 2>/dev/null
chmod 644 ~/.ssh/*.pub 2>/dev/null
chmod 600 ~/.ssh/authorized_keys 2>/dev/null
Paso de Auditoría 5: Plantilla de Configuración SSH Moderna Recomendada
Aquí hay una plantilla de configuración SSH moderna y completa que funciona con macOS Tahoe 26.3:
# ~/.ssh/config
# Actualizado para macOS Tahoe 26.3 / OpenSSH 10.0
# Última auditoría: 2026-02-28
# ============================================
# Valores predeterminados globales
# ============================================
Host *
# Usar claves Ed25519 por defecto
IdentityFile ~/.ssh/id_ed25519
# Solo ofrecer claves configuradas explícitamente para cada host
IdentitiesOnly yes
# Integración con macOS Keychain
UseKeychain yes
AddKeysToAgent yes
# Preferencias modernas de intercambio de claves
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256,[email protected]
# Estabilidad de conexión
ServerAliveInterval 60
ServerAliveCountMax 3
# Endurecimiento de seguridad
HashKnownHosts yes
StrictHostKeyChecking ask
# ============================================
# Servidores de trabajo
# ============================================
Host prod-web
HostName prod-web.example.com
User Deploy
IdentityFile ~/.ssh/id_ed25519_work
Port 22
Host staging
HostName staging.example.com
User Deploy
IdentityFile ~/.ssh/id_ed25519_work
Port 22
# ============================================
# Servidores personales
# ============================================
Host homelab
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_ed25519_personal
# ============================================
# Configuración de host de salto
# ============================================
Host internal-*
ProxyJump bastion.example.com
User admin
IdentityFile ~/.ssh/id_ed25519_work
Host bastion.example.com
User jump-user
IdentityFile ~/.ssh/id_ed25519_work
ForwardAgent no
Cambios en el Agente SSH e Integración con Keychain
macOS Tahoe 26.3 también trae cambios sutiles en cómo el agente SSH interactúa con el Keychain de macOS.
Integración con Keychain
La directiva UseKeychain específica de macOS continúa funcionando en Tahoe 26.3, pero su comportamiento ha sido refinado:
# Agregar su nueva clave Ed25519 al Keychain de macOS
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
# Verificar que la clave fue agregada
ssh-add -l
Si la clave fue agregada exitosamente, verá:
256 SHA256:abcdef123456... yourname@macbook-2026-02 (ED25519)
Carga Persistente de Claves
Asegúrese de que su configuración SSH incluya estas directivas para mantener la persistencia de claves entre reinicios:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
Sin UseKeychain yes, necesitará ejecutar ssh-add después de cada reinicio.
Verificar el Agente SSH
# Verificar si el agente está en ejecución
echo $SSH_AUTH_SOCK
# Listar claves cargadas
ssh-add -l
# Si no hay claves cargadas, agregarlas
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Para más detalles sobre las configuraciones de seguridad de macOS, consulte nuestra guía de seguridad y privacidad de macOS Tahoe.
Impacto en Pipelines CI/CD y Automatización
Los cambios SSH en macOS Tahoe 26.3 tienen implicaciones significativas para los flujos de trabajo automatizados. Si su pipeline CI/CD se ejecuta en runners de macOS (GitHub Actions, GitLab CI, Jenkins en Mac), estos cambios le afectarán después de que se actualice el sistema operativo del runner.
GitHub Actions
Si usa runners macos-latest o macos-15, el binario SSH eventualmente se actualizará. Audite sus flujos de trabajo ahora:
# .github/workflows/deploy.yml
# ANTES (potencialmente roto)
- name: Deploy
run: |
ssh administrator@${{ secrets.DEPLOY_HOST }} "cd /app && git pull"
# DESPUÉS (corregido)
- name: Deploy
run: |
ssh Administrator@${{ secrets.DEPLOY_HOST }} "cd /app && git pull"
Verifique sus secretos de despliegue:
DEPLOY_USER: verifique que las mayúsculas coincidan con la cuenta remotaSSH_PRIVATE_KEY: verifique que no sea una clave DSAKNOWN_HOSTS: verifique que no haya entradas de clave de host DSA
GitLab CI
# .gitlab-ci.yml
deploy:
before_script:
# Verificar el tipo de clave antes de desplegar
- ssh-keygen -l -f ~/.ssh/id_deploy
# Asegurarse de que NO sea DSA
- |
if ssh-keygen -l -f ~/.ssh/id_deploy | grep -q "DSA"; then
echo "ERROR: Clave DSA detectada. Se requiere migración."
exit 1
fi
script:
# Usar mayúsculas correctas para el nombre de usuario
- ssh -o StrictHostKeyChecking=no Deploy@$DEPLOY_HOST "deploy.sh"
Jenkins
Para pipelines de Jenkins que se ejecutan en agentes macOS:
pipeline {
agent { label 'macos' }
stages {
stage('Pre-flight SSH Check') {
steps {
sh '''
# Verificar la versión SSH
ssh -V
# Verificar claves DSA en las credenciales
for key in ~/.ssh/*.pub; do
if ssh-keygen -l -f "$key" | grep -q "DSA"; then
echo "WARNING: Clave DSA encontrada: $key"
exit 1
fi
done
echo "Verificación previa de SSH aprobada"
'''
}
}
}
}
Ansible Playbooks
Si ejecuta Ansible desde un nodo de control macOS:
# ansible.cfg
[defaults]
# Asegurarse del binario SSH correcto
ssh_executable = /usr/bin/ssh
# Forzar argumentos SSH específicos
[ssh_connection]
ssh_args = -o IdentitiesOnly=yes -o IdentityFile=~/.ssh/id_ed25519_ansible
Verifique las mayúsculas de los nombres de usuario en su inventario de Ansible:
# inventory.ini
# ANTES
[webservers]
web1.example.com ansible_user=administrator
# DESPUÉS
[webservers]
web1.example.com ansible_user=Administrator
Scripts de Copia de Seguridad Automatizados
Revise cualquier tarea cron o tarea de launchd que use SSH:
# Encontrar todos los trabajos cron con referencias SSH
crontab -l 2>/dev/null | grep -i ssh
# Encontrar plists de launchd con referencias SSH
grep -rl "ssh" ~/Library/LaunchAgents/ /Library/LaunchAgents/ /Library/LaunchDaemons/ 2>/dev/null
# Verificar scripts de copia de seguridad rsync (rsync usa SSH por defecto)
grep -rn "rsync.*@" ~/scripts/ ~/bin/ 2>/dev/null
Impacto en Flujos de Trabajo de Desarrollo Remoto
VS Code Remote SSH
La extensión Remote SSH de Visual Studio Code almacena configuraciones de conexión que pueden verse afectadas:
# Ubicación de configuración SSH de VS Code
cat ~/Library/Application\ Support/Code/User/settings.json | grep -A5 "remote.SSH"
# Verificar referencias de configuración SSH de VS Code
grep -n "ssh" ~/Library/Application\ Support/Code/User/settings.json 2>/dev/null
Actualice sus destinos SSH de VS Code para usar las mayúsculas correctas del nombre de usuario y claves no DSA.
JetBrains Gateway / Desarrollo Remoto
Los IDEs de JetBrains almacenan configuraciones SSH por separado:
# Verificar configuraciones SSH de JetBrains
find ~/Library/Application\ Support/JetBrains -name "*.xml" -exec grep -l "ssh" {} \; 2>/dev/null
tmux y Sesiones Persistentes
Si usa tmux o screen sobre SSH, sus scripts de reconexión necesitan actualizarse:
# Alias de reconexión tmux común - verificar mayúsculas del nombre de usuario
alias tm='ssh -t Administrator@server "tmux attach || tmux new"'
Para una configuración completa del entorno de desarrollador, consulte nuestra guía definitiva para desarrolladores de macOS Tahoe.
Soluciones Alternativas para Infraestructura Heredada
Algunos entornos no pueden actualizarse de inmediato. Los dispositivos de red, los sistemas embebidos y los servidores heredados pueden requerir DSA durante años. Aquí hay soluciones prácticas, ordenadas de más a menos recomendadas.
Solución Alternativa 1: Usar un Host de Salto (Recomendado)
Configure un host bastión Linux que aún admita DSA y úselo como proxy:
# ~/.ssh/config
Host legacy-device
HostName 192.168.1.1
User admin
ProxyJump bastion
Host bastion
HostName bastion.example.com
User jump
IdentityFile ~/.ssh/id_ed25519
El host bastión ejecuta un OpenSSH más antiguo (o uno compilado con soporte DSA) y maneja la negociación DSA con el dispositivo heredado. Su Mac solo necesita autenticarse en el bastión usando Ed25519.
Solución Alternativa 2: Usar un Contenedor Docker
Ejecute un cliente OpenSSH más antiguo dentro de un contenedor Docker:
# Crear un Dockerfile para SSH heredado
cat > ~/legacy-ssh/Dockerfile << 'EOF'
FROM alpine:3.18
RUN apk add --no-cache openssh-client
ENTRYPOINT ["ssh"]
EOF
# Construirlo
docker build -t legacy-ssh ~/legacy-ssh/
# Usarlo para conectarse a dispositivos heredados
docker run --rm -it \
-v ~/.ssh:/root/.ssh:ro \
legacy-ssh \
-o HostKeyAlgorithms=+ssh-dss \
-o PubkeyAcceptedKeyTypes=+ssh-dss \
admin@legacy-device
Crear un alias de shell para mayor comodidad:
# Agregar a ~/.zshrc
alias legacy-ssh='docker run --rm -it -v ~/.ssh:/root/.ssh:ro legacy-ssh'
# Uso
legacy-ssh -o HostKeyAlgorithms=+ssh-dss admin@legacy-device
Solución Alternativa 3: Instalar un OpenSSH Antiguo vía Homebrew
Puede compilar OpenSSH 9.7p1 (la última versión con soporte DSA) desde el código fuente:
# Instalar dependencias
brew install openssl@3
# Descargar el código fuente de OpenSSH 9.7p1
curl -O https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
tar xzf openssh-9.7p1.tar.gz
cd openssh-9.7p1
# Configurar con soporte DSA y prefijo personalizado
./configure \
--prefix=$HOME/openssh97 \
--with-ssl-dir=$(brew --prefix openssl@3)
# Compilar e instalar
make -j$(sysctl -n hw.ncpu)
make install
# Usar el binario SSH más antiguo
~/openssh97/bin/ssh -o HostKeyAlgorithms=+ssh-dss admin@legacy-device
Crear un alias para conexiones heredadas:
# Agregar a ~/.zshrc
alias ssh-legacy='~/openssh97/bin/ssh -o HostKeyAlgorithms=+ssh-dss -o PubkeyAcceptedKeyTypes=+ssh-dss'
# Uso
ssh-legacy admin@old-router
Solución Alternativa 4: Usar una Máquina Virtual Linux
Si usa UTM, Parallels o VMware Fusion:
- Configure una VM Linux liviana (Alpine o Ubuntu Server)
- Conéctese desde su Mac a la VM (usando Ed25519)
- Desde la VM, conéctese al dispositivo heredado (usando DSA)
Esto proporciona aislamiento completo y no requiere modificar su instalación SSH de macOS.
A Largo Plazo: Planificar el Reemplazo de Dispositivos
Si depende de DSA porque sus dispositivos de red no admiten algoritmos modernos, esa es una señal clara de que esos dispositivos han llegado al final de su vida útil desde una perspectiva de seguridad. Planifique una línea de tiempo de reemplazo:
- Enrutadores/Switches: La mayoría de los proveedores empresariales han admitido Ed25519 desde 2018
- Dispositivos NAS: Synology, QNAP y TrueNAS admiten Ed25519
- Servidores heredados: Si ejecutan OpenSSH anterior a 6.5, todo el sistema necesita actualización
Mejores Prácticas de Seguridad SSH para 2026
Con los cambios de macOS Tahoe 26.3 como catalizador, ahora es un buen momento para implementar mejoras de seguridad SSH integrales.
Mejores Prácticas de Gestión de Claves
1. Usar claves separadas para roles separados:
# Infraestructura de trabajo
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C "work-2026"
# Proyectos personales
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal -C "personal-2026"
# CI/CD y automatización
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_automation -C "automation-2026"
# Hosting Git (GitHub, GitLab)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_git -C "git-2026"
2. Siempre usar una frase de contraseña:
Una frase de contraseña cifra su clave privada en reposo. Si su máquina se ve comprometida, el atacante no puede usar sus claves SSH sin la frase de contraseña. Combinada con la integración de macOS Keychain, solo necesita escribir la frase de contraseña una vez.
# Cuando se solicite durante la generación de claves:
Enter passphrase (empty for no passphrase): [ingrese una frase de contraseña fuerte]
Enter same passphrase again: [confirmar]
3. Rotar las claves anualmente:
Incluya el año en los comentarios de su clave para saber cuándo fueron generadas:
ssh-keygen -t ed25519 -C "you@company-2026-Q1" -f ~/.ssh/id_ed25519_work_2026
Cuando llegue el nuevo año, genere nuevas claves, despliéguelas y retire las antiguas.
4. Establecer permisos de archivo correctos:
# Claves privadas: solo lectura del propietario
chmod 400 ~/.ssh/id_ed25519*
chmod 600 ~/.ssh/id_ed25519*.pub
# En realidad, las claves públicas pueden ser legibles por todos
chmod 644 ~/.ssh/id_ed25519*.pub
# El directorio SSH en sí
chmod 700 ~/.ssh
# Archivo de configuración
chmod 600 ~/.ssh/config
Endurecimiento del Lado del Servidor
Si administra servidores SSH, aproveche esta oportunidad para endurecerlos:
# /etc/ssh/sshd_config configuración recomendada
# Deshabilitar autenticación por contraseña (solo usar claves)
PasswordAuthentication no
# Deshabilitar inicio de sesión root
PermitRootLogin no
# Solo permitir usuarios específicos
AllowUsers deploy admin
# Usar intercambio de claves moderno
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256
# Usar algoritmos de clave de host modernos
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
# Usar cifrados modernos
Ciphers [email protected],[email protected],[email protected]
# Usar MACs modernos
MACs [email protected],[email protected]
# Limitación de velocidad
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
Después de cambiar sshd_config, siempre pruebe antes de desconectarse:
# Validar la configuración
sudo sshd -t
# Si no hay errores, reiniciar sshd
sudo systemctl restart sshd
# IMPORTANTE: Mantenga su sesión actual abierta y pruebe con una NUEVA conexión
# antes de cerrar la existente
Monitoreo y Alertas
Configure el monitoreo de eventos de autenticación SSH:
# Monitorear auth.log para intentos fallidos (servidores Linux)
tail -f /var/log/auth.log | grep "sshd"
# Monitorear el registro del sistema macOS para eventos SSH
log stream --predicate 'process == "sshd"' --level info
Solución de Errores Comunes
Error: "Connection closed by X.X.X.X port 22"
Causa: Discrepancia de mayúsculas en el nombre de usuario.
Solución:
# Determinar el nombre de usuario correcto
ssh -vvv user@host 2>&1 | grep "debug1: Sending"
# Intentar el caso contrario
ssh Administrator@host # si 'administrator' falló
ssh administrator@host # si 'Administrator' falló
Error: "Bad key types '+ssh-dss'"
Causa: La configuración SSH hace referencia al algoritmo DSA eliminado.
Solución:
# Encontrar y editar la línea problemática
grep -n "ssh-dss" ~/.ssh/config
# Eliminar o reemplazar la referencia al algoritmo
# Antes: HostKeyAlgorithms +ssh-dss
# Después: (eliminar la línea completa, o reemplazar con algoritmos modernos)
Error: "Bad key types '+ssh-rsa,ssh-dss'"
Causa: La configuración SSH tiene una lista de algoritmos compuesta que incluye DSA.
Solución:
# Antes
HostKeyAlgorithms +ssh-rsa,ssh-dss
PubkeyAcceptedAlgorithms +ssh-rsa,ssh-dss
# Después (eliminar ssh-dss, mantener ssh-rsa si es necesario para RSA heredado)
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Nota: ssh-rsa (con firmas SHA-1) también está obsoleto. Use rsa-sha2-256 o rsa-sha2-512 si debe usar RSA:
HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256
PubkeyAcceptedAlgorithms rsa-sha2-512,rsa-sha2-256
Error: "No matching host key type found"
Causa: El servidor remoto solo ofrece claves de host DSA.
Solución: Esto requiere acción del lado del servidor. Genere nuevas claves de host en el servidor:
# En el servidor remoto (si tiene acceso a la consola)
sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
sudo systemctl restart sshd
Si no puede actualizar el servidor, use las soluciones alternativas de host de salto o Docker descritas anteriormente.
Error: "WARNING: connection is not using a post-quantum key exchange algorithm"
Causa: El servidor remoto no admite el intercambio de claves post-cuántico.
Solución:
# Suprimir para un host específico
# Agregar a ~/.ssh/config:
Host old-server
WarnWeakCrypto no
# O suprimir globalmente (no recomendado)
Host *
WarnWeakCrypto no
Error: "Permission denied (publickey)"
Causa: Después de la migración de clave, la nueva clave no está autorizada en el servidor.
Solución:
# Verificar qué clave se está ofreciendo
ssh -v user@host 2>&1 | grep "Offering public key"
# Desplegar la clave correcta
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
Error: "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"
Causa: Después de eliminar entradas de clave de host DSA de known_hosts, el servidor ofrece un tipo de clave de host diferente.
Solución:
# Eliminar la entrada de clave de host antigua
ssh-keygen -R hostname
# Volver a conectarse y aceptar la nueva clave de host
ssh user@hostname
# Se le pedirá que verifique la nueva huella digital de clave de host
Entendiendo el Contexto Más Amplio
Los cambios SSH en macOS Tahoe 26.3 son parte de una tendencia más grande en toda la industria. Entender este contexto le ayuda a prepararse para cambios futuros en lugar de reaccionar a cada uno de ellos.
Línea de Tiempo de Versiones de OpenSSH
| Versión | Fecha | Cambios Clave |
|---|---|---|
| 7.0 | 2015 | DSA deshabilitado por defecto |
| 8.2 | 2020 | Firmas SHA-1 para RSA deprecadas |
| 8.8 | 2022 | Firmas SHA-1 RSA deshabilitadas por defecto |
| 9.0 | 2022 | KEx post-cuántico (sntrup761) habilitado por defecto |
| 9.9 | 2024 | Soporte post-cuántico ML-KEM añadido |
| 10.0 | 2025 | DSA eliminado completamente, ML-KEM por defecto |
macOS ha tardado históricamente 6-12 meses en adoptar estas versiones, que es por qué la eliminación de DSA está afectando a los usuarios de macOS a principios de 2026 a pesar de estar en OpenSSH 10.0 desde abril de 2025.
Qué Esperar Próximamente
Basado en la hoja de ruta de desarrollo de OpenSSH:
- Las firmas SHA-1 RSA (
ssh-rsa) probablemente se eliminarán completamente en OpenSSH 11.x - ECDSA con curvas NIST puede ser deprecado en favor de Ed25519
- Las firmas post-cuánticas (no solo el intercambio de claves) serán añadidas
- La autenticación basada en certificados será cada vez más promovida sobre las claves públicas sin procesar
Prepárese ahora:
- Asegurándose de que todas sus claves sean Ed25519
- Moviéndose a
rsa-sha2-256/512si debe usar RSA - Probando el intercambio de claves post-cuántico con sus servidores
- Evaluando la infraestructura de certificados SSH para su organización
Para más detalles sobre qué cambió en la actualización más amplia de macOS Tahoe 26.3, consulte nuestra guía de versión de macOS Tahoe 26.3.
Referencia Rápida: Comandos que Necesita
Aquí hay una referencia consolidada de cada comando mencionado en esta guía, organizada por tarea:
Diagnóstico
# Verificar la versión SSH
ssh -V
# Prueba de conexión detallada
ssh -vvv user@host
# Verificar qué binario SSH se está usando
which ssh
# Probar sin archivo de configuración
ssh -F /dev/null user@host
# Verificar tipos de claves actuales
for key in ~/.ssh/*.pub; do
echo "=== $key ==="
ssh-keygen -l -f "$key"
done
Generación de Claves
# Generar clave Ed25519 (recomendado)
ssh-keygen -t ed25519 -C "description-YYYY" -f ~/.ssh/id_ed25519
# Generar clave RSA (si Ed25519 no es compatible con el destino)
ssh-keygen -t rsa -b 4096 -C "description-YYYY" -f ~/.ssh/id_rsa
Despliegue de Claves
# Desplegar clave en servidor remoto
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
# Agregar clave al Keychain de macOS
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Auditoría de Configuración
# Encontrar referencias DSA en la configuración
grep -n "ssh-dss" ~/.ssh/config /etc/ssh/ssh_config
# Encontrar todas las directivas User
grep -n "User " ~/.ssh/config
# Validar la sintaxis de configuración
ssh -G test-host
# Corregir permisos
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 400 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub
Limpieza
# Eliminar clave de host antigua
ssh-keygen -R hostname
# Eliminar todas las entradas DSA de known_hosts
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak
grep -v "ssh-dss" ~/.ssh/known_hosts > ~/.ssh/known_hosts.tmp
mv ~/.ssh/known_hosts.tmp ~/.ssh/known_hosts
Preguntas Frecuentes
¿Puedo hacer un downgrade de OpenSSH en macOS Tahoe 26.3 para restaurar el soporte DSA?
No puede reemplazar el binario del sistema OpenSSH en macOS debido a la Protección de Integridad del Sistema (SIP). Sin embargo, puede instalar una versión más antigua a través de Homebrew o compilar desde el código fuente en una ubicación personalizada. El ssh del sistema en /usr/bin/ssh siempre será la versión OpenSSH 10.0 que se incluyó con Tahoe 26.3. Consulte la sección "Soluciones Alternativas para Infraestructura Heredada" para obtener instrucciones detalladas sobre cómo compilar OpenSSH 9.7p1 desde el código fuente.
¿El cambio de sensibilidad a mayúsculas en los nombres de usuario es permanente o es un error?
Basado en las notas de versión de OpenSSH 10.0 y la dirección del proyecto, esto parece ser un comportamiento intencional que se alinea con la especificación del protocolo SSH (RFC 4252), que define los nombres de usuario como sensibles a mayúsculas. Apple no ha comentado si esto es un error y no hay indicación de que se vaya a revertir. Debe tratar esto como el comportamiento permanente y actualizar sus configuraciones en consecuencia.
¿Mis claves RSA también dejarán de funcionar?
Las claves RSA con firmas SHA-2 (rsa-sha2-256 y rsa-sha2-512) continúan funcionando y serán admitidas en el futuro previsible. Sin embargo, las claves RSA con firmas SHA-1 (ssh-rsa) han sido deshabilitadas por defecto desde OpenSSH 8.8 y probablemente serán eliminadas por completo en una versión futura. Si usa claves RSA, verifique que tengan al menos 3072 bits y que sus servidores acepten firmas SHA-2. Para nuevas claves, Ed25519 es la opción preferida.
¿Cómo arreglo las conexiones SSH de macOS a Windows Server?
La implementación OpenSSH de Windows Server ha sido históricamente insensible a las mayúsculas para los nombres de usuario. Después de la actualización de macOS Tahoe 26.3, debe usar las mayúsculas exactas que reconoce Windows. Para cuentas de dominio, use DOMAIN\Username o [email protected]. Para cuentas locales, verifique el nombre de la cuenta en Administración de equipos. Actualice su ~/.ssh/config en consecuencia:
Host windows-server
HostName win.example.com
User DOMAIN\\AdminUser
IdentityFile ~/.ssh/id_ed25519
¿Esto también afecta a SFTP y SCP?
Sí. Tanto sftp como scp usan la misma biblioteca de cliente SSH y están sujetos a la misma aplicación de sensibilidad a mayúsculas y eliminación de DSA. Cualquier cliente SFTP (como Cyberduck, Transmit o FileZilla) que use el binario SSH del sistema también se verá afectado. Los clientes SFTP GUI que incluyen su propia biblioteca SSH (como Cyberduck con su propia compilación de libssh2) pueden no verse afectados, pero esto depende de la aplicación específica.
Conclusión
macOS Tahoe 26.3 envió cambios SSH que rompieron flujos de trabajo establecidos sin advertencia adecuada. La aplicación de nombres de usuario sensibles a mayúsculas, la eliminación completa de DSA y las advertencias de intercambio de claves post-cuántico requieren atención cada una, pero todas son sencillas de resolver una vez que comprende qué cambió.
Los elementos de acción inmediata son:
- Auditar su
~/.ssh/configpara detectar discrepancias de mayúsculas en las directivasUsery eliminar cualquier referencia assh-dss - Generar claves Ed25519 para reemplazar cualquier clave DSA restante
- Desplegar las nuevas claves en todos los servidores de su inventario
- Actualizar scripts de automatización y pipelines CI/CD con las mayúsculas correctas del nombre de usuario y rutas de claves
- Silenciar o resolver las advertencias post-cuánticas según su postura de seguridad
Estos cambios, aunque disruptivos, empujan el ecosistema SSH de macOS hacia valores predeterminados de seguridad más sólidos. Ed25519 es más rápido, más seguro y produce claves más pequeñas que DSA. Los nombres de usuario sensibles a mayúsculas se alinean con la especificación del protocolo SSH. El intercambio de claves post-cuántico protege contra amenazas futuras. El dolor de la migración es real, pero las mejoras de seguridad son sustanciales.
Si está configurando un nuevo entorno de desarrollo en macOS Tahoe, comience con nuestra guía de configuración de desarrollador de macOS Tahoe para configurar todo correctamente desde el principio. Para una configuración de seguridad más amplia, nuestra guía de seguridad y privacidad de macOS Tahoe cubre la pila de seguridad completa más allá de SSH.
