¿Cómo cambio mi frase de contraseña de clave privada?

284

Tengo un par de claves pública / privada existente. La clave privada está protegida con contraseña y el cifrado puede ser RSA o DSA. Estas claves son del tipo que genera ssh-keygeny generalmente almacena debajo ~/.ssh.

Me gustaría cambiar la contraseña de la clave privada. ¿Cómo lo hago, en un shell estándar de Unix?

Además, ¿cómo elimino la contraseña? ¿Solo cambiarlo a vacío?

kch
fuente

Respuestas:

372

Para cambiar la frase de contraseña en su clave DSA predeterminada:

$ ssh-keygen -p -f ~/.ssh/id_dsa

luego proporcione su frase de contraseña antigua y nueva (dos veces) en las indicaciones. (Úselo ~/.ssh/id_rsasi tiene una clave RSA).

Más detalles de man ssh-keygen:

[...]
SYNOPSIS
    ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
               [-f output_keyfile]
    ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
[...]
     -f filename
             Specifies the filename of the key file.
[...]
     -N new_passphrase
             Provides the new passphrase.

     -P passphrase
             Provides the (old) passphrase.

     -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.
[...]
Mike Mazur
fuente
1
Esto es del envío de la página de manual con net-misc / openssh-5.2_p1-r2 en Gentoo Linux.
Mike Mazur el
12
Además, por el bien de la futura persona perezosa, revertiría el orden: respuesta rápida primero, página del manual más tarde.
kch
2
Creo que la respuesta es excelente, ya que muestra dónde puede cambiar la contraseña y dónde buscar la respuesta. He ayudado a muchas personas a configurar claves ssh, y para ellos recordar qué herramienta han utilizado no siempre es fácil. Además, la búsqueda de la respuesta en la 'red es la primera opción para muchos ...
sastorsl
55
Si sus máquinas usan OpenSSH> = 6.5, debería usar la -oopción para habilitar el nuevo formato de clave privada (bcrypt como KDF por defecto). Con versiones anteriores de OpenSSH, use PKCS # 8 para archivos de clave privada más seguros .
Quinn Commandado
2
@FranciscoLuz el comando en mi respuesta es específico de una clave DSA. Si tiene una clave RSA, entonces su comando es correcto. Agregué una propaganda a la respuesta para abordar esto.
Mike Mazur
-9

Elimine sus claves públicas / privadas de SSH:

rm ~/.ssh/id_rsa*

Recree el par de claves, eligiendo una nueva frase de contraseña:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

Agregue la clave privada recién creada a su Llavero OS X para almacenar la frase de contraseña y administrar su desbloqueo automáticamente:

ssh-add -K ~/.ssh/id_rsa

Copie la clave pública en el portapapeles de OS X para agregar a servicios web como GitHub, etc.

cat ~/.ssh/id_rsa.pub | pbcopy

Agregue su clave pública recién creada al ~/.ssh/authorized_keysarchivo del servidor remoto. Asegúrese de garantizar los permisos correctos de la ~/.sshcarpeta remota (700) y ~/.ssh/authorized_keys(600). Es posible que desee investigar utilizando ssh-copy-idpara facilitar este proceso.

gauta
fuente
3
El cartel preguntaba cómo cambiar la frase de contraseña en su clave, no tirarla y generar una nueva; y nunca mencionaron OS X.
musicinmybrain
2
Hubiera votado a favor de esta respuesta si no fuera por estos tres problemas: 1. Eliminar las claves antiguas no es un buen comienzo, ya que las necesitará al actualizar authorized_keys. 2. No ha mencionado por qué es mejor crear nuevas claves que cambiar las contraseñas de las antiguas. 3. Hace suposiciones sobre el sistema operativo, que no es compatible con la pregunta.
Kasperd