Come faccio ad aggiungere una password a una chiave privata OpenSSH che è stata generata senza una password?


213

Ho generato una chiave privata OpenSSH usando puttygen (e l'ho esportata in formato OpenSSH). Come posso inserire una password su questa chiave esistente (so come generare una nuova chiave con una password)?


13
Se vedi questo commento, contrassegna una delle risposte come accettate o scrivi un commento dicendo ciò che hanno perso. Grazie!
Benjamin Atkin,

1

Se ottieni Bad passphraseuna id_ed25519chiave ma la password è corretta, probabilmente stai utilizzando un livello inferiore ssh-keygenper gestirla.
15-15

Risposte:


350

Prova il comando ssh-keygen -p -f keyfile

Dalla pagina man di 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.

Esempio:

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

5
Per coloro che vogliono sapere cos'è -f: specifica il file di input.
Neikos,

4
//, @sigjuice, per favore, potresti pubblicare un esempio, come $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Questo potrebbe aiutare le persone che non sanno come distinguere una chiave pubblica da una chiave privata e aiutarli a bagnarsi i piedi più velocemente.
Nathan Basanese,

Per qualche motivo, su MacOS 10.14, questo non formatta il file con l' Proc-Type: 4,ENCRYPTEDintestazione, il che è incompatibile con alcune applicazioni che controllano la passphrase. Dopo aver provato diversi modi per farlo funzionare, il modo più semplice per aggirare il problema era semplicemente fare la stessa cosa in un contenitore Docker che eseguiva Ubuntu e quindi copiare la chiave sul mio Mac.
Ryanbrainard,

38

Utilizzare l'opzione -p per ssh-keygen. Ciò consente di modificare la password anziché generare una nuova chiave.

Cambia la password come mostra sigjuice:

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

La password richiesta sarà la nuova password. (Ciò presuppone che tu abbia aggiunto la chiave pubblica ~/.ssh/id_rsa.pubai file authorized_keys.) Prova con ssh:

ssh -i ~/.ssh/id_rsa localhost

Puoi avere più chiavi con nomi diversi per usi diversi.


//, potresti mostrare un esempio e come verificare che l'opzione abbia funzionato, @BillThor?
Nathan Basanese,

Non capisco. La passphrase è impostata, vedo quando provo a cambiarla di nuovo. Ma quando provo ad accedere al server remoto non richiede questa password passphrase, perché?
Luka

1
Va bene. Chiede una volta per sessione :) Non lo sapevo.
Luka

Questo significa che devi disconnetterti e riconnetterti? Chiudere la finestra del terminale e riaprirla non funziona per me.
Simon H,

È possibile digitare ssh-add -Dper rimuovere l'identità memorizzata nella cache. Quindi, prova a connetterti di nuovo e ti verrà richiesta la password. Utilizzare ssh-add -lper visualizzare un elenco delle identità memorizzate nella cache.
Scott Nedderman,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.