Sembra che ssh-add -K ~/.ssh/id_rsa
carichi la tua chiave ma ti chiederà la password ogni volta che riavvii.
Sto cercando una soluzione che non mi imponga di reinserire la password della chiave tra gli accessi.
Su OSX, il client ssh-add
nativo ha un argomento speciale per salvare la passphrase della chiave privata nel portachiavi OSX, il che significa che il normale login lo sbloccherà per l'uso con ssh. Su OSX Sierra e versioni successive, è inoltre necessario configurare SSH per utilizzare sempre il portachiavi (vedere il Passaggio 2 di seguito).
In alternativa puoi usare una chiave senza passphrase, ma se preferisci la sicurezza che è certamente accettabile con questo flusso di lavoro.
Fallo solo una volta:
ssh-add -K ~/.ssh/[your-private-key]
Inserisci la passphrase della chiave e non ti verrà richiesto di nuovo.
(Se sei su una versione pre-Sierra di OSX, hai finito, il passaggio 2 non è richiesto.)
Sembra che OSX Sierra abbia rimosso il comodo comportamento di mantenere le chiavi tra gli accessi e l'aggiornamento di ssh non utilizza più il portachiavi per impostazione predefinita. Per questo motivo ti verrà chiesto di inserire la passphrase per una chiave dopo l'aggiornamento e di nuovo dopo ogni riavvio.
La soluzione è abbastanza semplice ed è descritta in questo commento sul thread github . Ecco come lo hai impostato:
Assicurati di aver completato il Passaggio 1 sopra per memorizzare la chiave nel portachiavi.
Se non lo hai già fatto, crea un file ~/.ssh/config
. In altre parole, nella directory .ssh
nella tua directory home, crea un file chiamato config
.
In quel file .ssh/config
, aggiungi le seguenti righe:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Modifica ~/.ssh/id_rsa
nel nome file effettivo della tua chiave privata. Se hai altre chiavi private nella tua directory ~.ssh
, aggiungi anche una riga IdentityFile
per ognuna di esse. Ad esempio, ho una riga aggiuntiva che legge IdentityFile ~/.ssh/id_ed25519
per una seconda chiave privata.
Il UseKeychain yes
è la parte chiave, che indica a SSH di cercare nel tuo portachiavi OSX la passphrase della chiave.
Questo è tutto! La prossima volta che caricerai una connessione ssh, proverà le chiavi private che hai specificato, e cercherà la loro passphrase nel portachiavi OSX. Non è richiesta la passphrase.
Viene richiesta la password ogni volta perché il portachiavi di "accesso" viene bloccato dopo inattività e / o sospensione o nel caso in cui si riavvii. Ci sono due modi per risolvere questo problema per te.
Cambia le impostazioni per il tuo portachiavi "login". Supponendo che la tua chiave ssh sia memorizzata nel portachiavi "login".
Genera un'altra chiave SSH senza usare una passphrase.
ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
ssh-add -K <path to ssh key>
Non ti dovrebbe essere più richiesta la password del portachiavi.
Ho avuto un problema simile, in quanto mi è stato chiesto ogni volta la mia passphrase di chiave di pub.
Per suggerimento dell'utente "trisweb" sopra, ho attivato queste opzioni in ~ / .ssh / config:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
MA è ancora richiesto ogni volta che volevo usare ssh.
Alla fine ho acceso "ssh -v" e ho trovato questa linea di debug:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Ho quindi aperto il mio portachiavi in "Keychain Access.app", ho trovato la chiave "SSH: /Users/username/.ssh/id_rsa" e l'ho aperta.
Ho cliccato su "Mostra password" per rivelare la password e ho scoperto che la passphrase nel portachiavi era una vecchia passphrase.
Ho aggiornato la passphrase in Accesso Portachiavi e ora funziona senza password.
Avrei potuto anche aggiornare la passphrase con questa frase:
ssh-keygen -p -f ~/.ssh/id_rsa
Inoltre, in macOS Sierra e HighSierra (non conosciamo le versioni precedenti), l'esecuzione di ssh-add -A
consente all'agente di caricare tutte le chiavi le cui passphrase sono memorizzate su Keychain ... Quindi molto utile
Per tutto ciò che sopra non ha funzionato, il mio problema sembra essere stato perché stavo duplicando il UseKeychain yes
& AddKeysToAgent yes
in tutti i profili / scorciatoie di chiavi ssh. Ho aggiornato il mio file ~/.ssh/config
per dichiararli solo una volta e ora caricano tutti all'accesso senza richiedere password all'avvio, ad es.
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/foo
IdentityFile ~/.ssh/bar
Host foo
HostName foo.com
User fooUser
IdentityFile ~/.ssh/foo
Host bar
HostName bar.com
User barUser
IdentityFile ~/.ssh/bar
Aggiungi la chiave pubblica in:
.ssh/known_hosts
La chiave pubblica di solito è attiva:
/home/user/.ssh/id_rsa.pub
Spero che questo aiuti