¿Cómo agrego una contraseña a una clave privada de OpenSSH que se generó sin una contraseña?


213

Generé una clave privada OpenSSH usando puttygen (y la exporté en formato OpenSSH). ¿Cómo puedo poner una contraseña en esta clave existente (sé cómo generar una nueva clave con una contraseña)?


13
Si ve este comentario, marque una de las respuestas como aceptada o escriba un comentario diciendo lo que se perdió. ¡Gracias!
Benjamin Atkin

1

Si obtiene Bad passphraseuna id_ed25519clave pero la contraseña es correcta, probablemente esté utilizando un nivel inferior ssh-keygenpara administrarla.
jww

Respuestas:


350

Prueba el comando ssh-keygen -p -f keyfile

Desde la página de manual de ssh-keygen

 -p      Requests changing the passphrase of a private key file instead of
         creating a new private key.  The program will prompt for the file
         containing the private key, for the old passphrase, and twice for
         the new passphrase.

 -f filename
         Specifies the filename of the key file.

Ejemplo:

ssh-keygen -p -f ~/.ssh/id_rsa

55
Para aquellos que quieran saber qué es -f: especifica el archivo de entrada.
Neikos

44
//, @sigjuice, ¿podrías publicar un ejemplo, como $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Esto podría ayudar a las personas que no saben diferenciar entre una clave pública y una privada, y ayudarles a mojarse más rápido.
Nathan Basanese

Por alguna razón, en MacOS 10.14, esto no formatea el archivo con el Proc-Type: 4,ENCRYPTEDencabezado, lo cual es incompatible con algunas aplicaciones que buscan una frase de contraseña. Después de probar varias formas de hacerlo funcionar, la forma más fácil de solucionarlo era hacer lo mismo dentro de un contenedor Docker que ejecuta Ubuntu y luego copiar la clave de nuevo a mi Mac.
ryanbrainard

38

Use la opción -p para ssh-keygen. Esto le permite cambiar la contraseña en lugar de generar una nueva clave.

Cambie la contraseña como muestra sigjuice:

ssh-keygen -p -f ~/.ssh/id_rsa

La contraseña requerida será la nueva contraseña. (Esto supone que ha agregado la clave pública ~/.ssh/id_rsa.puba sus archivos autorizado_claves). Pruebe con ssh:

ssh -i ~/.ssh/id_rsa localhost

Puede tener varias claves con diferentes nombres para diferentes usos.


//, ¿Podría mostrar un ejemplo y cómo verificar que la opción haya funcionado, @BillThor?
Nathan Basanese

No entiendo. La frase de contraseña está configurada, veo cuando intento cambiarla nuevamente. Pero cuando intento iniciar sesión en el servidor remoto, no solicita esta contraseña de contraseña, ¿por qué?
Luka

1
Está bien. Pregunta una vez por sesión :) No lo sabía.
Luka

¿Esto significa que tiene que cerrar sesión y volver a iniciarla? Cerrar la ventana de terminal y volver a abrirlo no me funciona.
Simon H

Puede escribir ssh-add -Dpara eliminar su identidad en caché. Luego, intente conectarse nuevamente y le pedirá su contraseña. Use ssh-add -lpara ver una lista de sus identidades almacenadas en caché.
Scott Nedderman el

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.