Come rimuovo la passphrase per la chiave SSH senza dover creare una nuova chiave?


1034

Ho impostato una passphrase durante la creazione di una nuova chiave SSH sul mio laptop. Ma, come mi rendo conto ora, questo è abbastanza doloroso quando stai cercando di impegnarti ( Git e SVN ) in una posizione remota su SSH molte volte in un'ora.

Un modo in cui riesco a pensare è, eliminare le mie chiavi SSH e crearne di nuove. C'è un modo per rimuovere la passphrase, pur mantenendo le stesse chiavi?


9
Penso che la risposta rigorosa sia in realtà la risposta di Torsten Marek. Il trucco di ssh-agent potrebbe essere quello che stai cercando, ma è una risposta a una domanda diversa.
Tardate,

1
La passphrase non è solo una chiave per sbloccare la chiave SSH privata, ma fa parte del meccanismo di crittografia. Una parte è la chiave SSH, l'altra - la passphrase inserita manualmente. Solo se entrambe le parti sono corrette, la chiave composita generata da esse al volo sarà valida. Quindi, un'altra passphrase corrisponde ad altre chiavi SSH (e nessuna passphrase è un caso speciale di "altra passphrase").
Paul,

97
Chiudere tali domande è come discutere se gli effetti collaterali nei linguaggi di programmazione dovrebbero essere consentiti perché sono "puri" o no. I puristi si divertono sempre, mentre gli altri non gliene frega niente perché è una funzione utile e semplifica la vita. è necessario ssh, anche se non è strettamente legato alla programmazione ... non chiudere tali domande. : |
sabato

Risposte:


1933

Risposta breve:

$ ssh-keygen -p

Questo ti chiederà quindi di inserire la posizione del file di chiavi, la vecchia passphrase e la nuova passphrase (che può essere lasciata vuota per non avere passphrase).


Se vuoi fare tutto su una riga senza istruzioni, fai:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Importante: fai attenzione che quando esegui i comandi verranno generalmente registrati nel tuo ~/.bash_historyfile (o simili) in testo normale includendo tutti gli argomenti forniti (cioè le passphrase in questo caso). Pertanto, si consiglia di utilizzare la prima opzione a meno che non si abbia un motivo specifico per fare diversamente.

Si noti tuttavia che è ancora possibile utilizzare -f keyfilesenza dover specificare -P-N, e che il file di chiavi è predefinito ~/.ssh/id_rsa, quindi in molti casi non è nemmeno necessario.

Potresti voler considerare l'uso di ssh-agent, che può memorizzare nella cache la passphrase per un certo periodo. Le ultime versioni di gpg-agent supportano anche il protocollo utilizzato da ssh-agent.


464
Per essere espliciti: puoi semplicemente eseguire ssh-keygen -pin un terminale. Ti chiederà quindi un file di chiavi (predefinito per me il file corretto ~/.ssh/id_rsa), la vecchia passphrase (inserisci quello che hai ora) e la nuova passphrase (inserisci nulla).
Henrik N,

34
Ex. :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Fedir RYKHTIK

24
-1 per rendere l'utente digita la sua password nel terminale e renderla accessibile tramite ~/.bash_history. È meglio digitare:$ cd ~/.ssh && ssh-keygen -f id_dsa -p
betoharres,

5
Voi ragazzi devono tenere presente che se si immette il comando alla shell iniziato uno spazio (bianco) che il comando non viene registrato alla ~/.bash_hstoryIe. usa `ssh-keygen -p -P oldpassphrase -N" "-f ~ / .ssh / id_rsa` e stai bene (a meno che tu non abbia altri keylogger lì). Potresti anche sbarazzarti del record della storia ..
Enorme

14
Potrebbe valere la pena aggiungere una riga che dice che ciò sovrascriverà il file esistente e non richiederà una nuova posizione.
Lars Francke,

46

$ ssh-keygen -p ha funzionato per me

Git bash aperto. Incollato:$ ssh-keygen -p

Premi invio per posizione predefinita.

Inserisci la passphrase precedente

Immettere una nuova passphrase - BLANK

Conferma la nuova passphrase - BLANK

BOOM il dolore di entrare nella passphrase per git push era sparito.

Grazie!


Se quando premi Invio per $ ssh-keygen -pe la tua chiave non si trova nella posizione predefinita dire (/Users/yourname/.ssh/id_rsa), puoi rispondere mettendo /Users/yourname/.ssh/yourkeyquando richiesto
Chigozie Orunta

37

Potresti voler aggiungere quanto segue al tuo .bash_profile (o equivalente), che avvia ssh-agent all'accesso.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

Su alcune distro Linux (Ubuntu, Debian) puoi usare:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

Questo copierà l'id generato su una macchina remota e lo aggiungerà al portachiavi remoto.

Puoi leggere di più qui e qui .


7
La moderna distribuzione non avvia immediatamente un agente ssh?
Troels Arvin,

Su alcune distro Linux (Ubuntu, Debian) puoi usare: ssh-copy-id -i ~ / .ssh / id_dsa.pub username @ host Supponendo ovviamente che tu abbia accesso in questo modo. E anche se è del 2008, forse dovrebbe essere modificato per fare riferimento a id_rsa.pub (sì, potrei modificarlo ma non mi sento a mio agio nel farlo alle opere di altri - e esp va per qualcosa del genere).
Pryftan,

@TroelsArvin Sì. Ma ci sono volte in cui viene ucciso (anche se la circostanza che ho incontrato non mi viene in mente - a meno che forse X11 non abbia un problema e devi riavviarlo ... potrebbe essere una di queste istanze). In tal caso, devi "ricrearlo".
Pryftan,

8

Per modificare o rimuovere la passphrase, trovo spesso più semplice passare solo i flag pe f, quindi lascia che il sistema mi spinga a fornire le passphrase:

ssh-keygen -p -f <name-of-private-key>

Per esempio:

ssh-keygen -p -f id_rsa

Immettere una password vuota se si desidera rimuovere la passphrase.

Un esempio di esecuzione per rimuovere o modificare una password è simile al seguente:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Quando si aggiunge una passphrase a una chiave che non ha passphrase, la corsa è simile alla seguente:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

3

Su Windows, puoi usare PuttyGen per caricare il file della chiave privata, rimuovere la passphrase e quindi sovrascrivere il file della chiave privata esistente.


2

Sul Mac puoi archiviare la passphrase per la tua chiave ssh privata nel tuo Portachiavi, il che rende trasparente l'uso di essa. Se sei loggato, è disponibile, quando sei disconnesso il tuo utente root non può usarlo. Rimuovere la passphrase è una cattiva idea perché chiunque con il file può usarla.

ssh-keygen -K

Aggiungi questo a ~/.ssh/config

UseKeychain yes
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.