Mensaje de error
Load key "/path/to/key": incorrect passphrase supplied to decrypt private key
También se muestra como
- incorrect passphrase supplied to decrypt private key
- Bad passphrase, try again for /path/to/key:
El `ssh-add` interactivo vuelve a preguntar con «Bad passphrase, try again for …:»; `ssh` simplemente vuelve a pedirla.
OpenSSH (ssh-keygen, ssh-add, ssh) — encrypted private key
Qué significa
El archivo de clave se analizó bien y está cifrado; lo que falló fue descifrarlo con la frase de contraseña proporcionada. OpenSSH puede distinguir esto de un archivo dañado porque el contenedor cifrado incluye un valor de comprobación; por eso este mensaje significa realmente «frase de contraseña incorrecta», tanto para las claves en formato OpenSSH como para las claves PEM/PKCS#8 cifradas. No hay forma de recuperar una frase de contraseña olvidada; hay que sustituir la clave.
Por qué ocurre
La frase de contraseña no es la que se estableció en esta clave
frecuenteVarias claves con frases de contraseña distintas, o una clave cuya frase de contraseña se cambió con `ssh-keygen -p` en otra máquina.
Caracteres de más procedentes de un archivo o una variable
ocasionalFrases de contraseña leídas de archivos o secretos con un salto de línea final o con comillas, pasadas mediante `-P` o mediante scripts de `SSH_ASKPASS`.
Distribución del teclado o bloqueo de mayúsculas
ocasionalLas frases de contraseña con caracteres que cambian de sitio entre distribuciones (y/z, caracteres especiales) fallan en una máquina con otra distribución de teclado.
Cómo solucionarlo
- 1.
Probar la frase de contraseña de forma interactiva
Si `ssh-keygen -y` acepta la frase de contraseña que escribes, el problema está en cómo la proporciona tu script.
bash ssh-keygen -y -f ~/.ssh/id_ed25519 > /dev/null # prompts; succeeds only with the right passphrase ssh-keygen -p -f ~/.ssh/id_ed25519 # change the passphrase (needs the old one) - 2.
Usar un agente en lugar de pasar frases de contraseña
Desbloquea la clave una sola vez en `ssh-agent` (o en el llavero del sistema operativo) en lugar de incrustar la frase de contraseña en scripts o en la CI.
bash # Unlock once per session instead of typing or storing the passphrase in scripts eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 # macOS: keep it in the keychain ssh-add --apple-use-keychain ~/.ssh/id_ed25519