macOS 10.12 Sierra non dimenticherà la mia passphrase del file di chiavi ssh


25

Dopo aver creato un nuovo id-rsafile con chiave crittografata ssh-keygene averlo usato per la prima volta, non riesco a far dimenticare a macOS la passphrase. Questo è simile a come fare in modo che OS X non ricordi la domanda sulla passphrase della chiave ssh, ma peggio.

Ho provato a riavviare, uccidere ssh-agent, bloccare tutti i miei portachiavi ma sembra ancora essere memorizzato da qualche parte. Tuttavia, non riesco a trovarlo in nessun portachiavi. Questo sembra essere molto insicuro. Le risposte alla password della chiave privata SSH mai rimosse con Keychain / ssh-agent non aiutano.

In effetti, la finestra di dialogo che appariva chiedendoti se desideri memorizzare la passphrase o meno non sembra più esistere.


Hai verificato se è effettivamente crittografato?
John Keates,

Si. Abbastanza sicuro che sia come ssh chiede la passphrase la prima volta che la uso. Qualcuno può davvero riprodurlo?
Hogliux,

Bene, funziona così anche con la mia configurazione, è il modo in cui è stato configurato ssh / ssh-agent.
John Keates,

È vero se fai clic sulla casella di controllo per dire a macOS di memorizzare la passphrase nel portachiavi. Tuttavia, se non fai clic su quella casella di controllo macOS dovrebbe sempre richiedere la passphrase. Ma anche se hai fatto clic su di esso, sei sempre stato in grado di rimuoverlo nuovamente nell'utilità portachiavi. Da Sierra la finestra di dialogo non viene più visualizzata e non vi è alcuna voce nell'utilità portachiavi.
Hogliux,

Questa è la finestra di dialogo di cui sto parlando che non sembra più esistere: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux,

Risposte:


27

Per disabilitare la memorizzazione della passphrase nel portachiavi è necessario aggiungere le seguenti righe al file ~ / .ssh / config :

Host *
UseKeyChain no

Se hai già passphrase memorizzato nel portachiavi puoi eliminarlo usando i comandi:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Se desideri avere un comportamento simile a OS X El Capitan o precedente (ovvero passphrase memorizzato fino al logout o al riavvio), aggiungi semplicemente a ~ / .ssh / config:

AddKeysToAgent yes

Non è necessario avviare ssh-agent.


1
Questa risposta risolve definitivamente il problema! Quindi ho contrassegnato questo come la risposta corretta. Grazie!
Hogliux,

modifica suggerita: cambia Library/Keychains/<UUID>/in ~/Library/Keychains/<UUID>/per chiarezza :)
Mohamed Hafez,

modifica suggerita accettata :)
mbamac

20

Grazie a Clive, ho una migliore comprensione di questa nuova "caratteristica". Quando digiti la passphrase Sierra lo aggiunge al tuo portachiavi ma non all'agente ssh. Se la tua identità non è in ssh-agent non c'è modo di gestirla ssh-add. Per gestire (es. Rimuovere) la tua identità da Keychain devi aggiungere la tua identità ssh-agentutilizzando ssh-add. Una volta aggiunta la tua identità ssh-agent, puoi usarla ssh-add -K -dper rimuoverla sia da ssh-agentKeychain. Se vuoi che la tua identità venga aggiunta a ssh-agent ogni volta che usi ssh add:

AddKeysToAgent yes

al tuo .ssh/config. Questo assicurerà che ssh-agentabbia sempre la tua identità.


Solo un seguito. Se aggiungi 'UseKeyChain no' al tuo .ssh / config, Keychain impedirà all'aggiunta della tua passphrase. Si desidera mantenere 'AddKeysToAgent yes' in ssh-agent manterrà la passphrase fino al riavvio o all'utilizzo di ssh-add -d.
Gene Frenkler,

Nota che questo richiede l'uso dell'OpenSSH fornito da Apple. Questa patch non è inclusa in home brew dalhomebrew/dupes/openssh: stable 7.3p1
Ryan Gibbons,

3
ssh-add -K -d

Questo può rimuovere le passphrase precedentemente memorizzate nel portachiavi. Da macOS 10.12 Sierra, per evitare di nuovo la passphrase memorizzata nel portachiavi, assicurati di fare ssh-addprima.


Sì. Funzionava con le versioni precedenti di macOS Sierra. Ma non funziona più. macOS Sierra ricorda ancora la passphrase.
Hogliux,

1
OK. Altre indagini. Lo dimentica una volta, ma tornerà direttamente nel portachiavi dopo averlo usato ovunque (ssh, scp, git ecc.). Uno sconosciuto gentile mi ha inviato un'e-mail direttamente e ha scoperto che la passphrase sembra essere memorizzata in ~ / Library / Keychains / <SOME-UUID> /keychain-2.db. Ma anche quando si blocca il mio portachiavi di accesso (e tutti gli altri portachiavi), os x non chiederà la password del mio portachiavi quando accedo alla passphrase. Non sembra proprio giusto.
hogliux,

In effetti sembra che in Sierra la passphrase venga salvata in quella posizione del portachiavi e non nel solito portachiavi di Login.
m1keil,
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.