¿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)?
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.
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é.
Bad passphrase
unaid_ed25519
clave pero la contraseña es correcta, probablemente esté utilizando un nivel inferiorssh-keygen
para administrarla.Respuestas:
Prueba el comando
ssh-keygen -p -f keyfile
Desde la página de manual de ssh-keygen
Ejemplo:
fuente
$ 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.Proc-Type: 4,ENCRYPTED
encabezado, 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.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:
La contraseña requerida será la nueva contraseña. (Esto supone que ha agregado la clave pública
~/.ssh/id_rsa.pub
a sus archivos autorizado_claves). Pruebe con ssh:Puede tener varias claves con diferentes nombres para diferentes usos.
fuente
ssh-add -D
para eliminar su identidad en caché. Luego, intente conectarse nuevamente y le pedirá su contraseña. Usessh-add -l
para ver una lista de sus identidades almacenadas en caché.También puedes usar
openssl
:ver: https://security.stackexchange.com/a/59164/194668
fuente