Come posso aggiungere permanentemente la mia chiave privata SSH a Keychain in modo che sia automaticamente disponibile per ssh?

324

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.

    
posta sorin 13.04.2012 - 15:13
fonte

6 risposte

543

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.

Passaggio 1 - Memorizza la chiave nel portachiavi

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.)

Passaggio 2: configurare SSH per utilizzare sempre il portachiavi

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:

  1. Assicurati di aver completato il Passaggio 1 sopra per memorizzare la chiave nel portachiavi.

  2. 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 .

  3. 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.

  4. 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.

risposta data 26.08.2016 - 03:06
fonte
13

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.

  1. Cambia le impostazioni per il tuo portachiavi "login". Supponendo che la tua chiave ssh sia memorizzata nel portachiavi "login".

    • Apri Accesso Portachiavi
    • Evidenzia il portachiavi "login"
    • Fai clic con il pulsante destro del mouse o fai clic sul portachiavi "login"
    • Deseleziona le caselle di controllo "Blocca dopo X minuti di inattività" e "Blocca quando dormi".
  2. Genera un'altra chiave SSH senza usare una passphrase.

    • Apri terminale.
    • Inserisci comando: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t è per tipo, -b è dimensione della chiave, -C è comment, -f file di output (devi prima creare le directory)
    • Non impostare una passphrase.
    • Importa la chiave SSH nel portachiavi "login" con ssh-add -K <path to ssh key>

Non ti dovrebbe essere più richiesta la password del portachiavi.

    
risposta data 24.07.2015 - 05:46
fonte
12

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

    
risposta data 19.12.2017 - 18:24
fonte
6

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

    
risposta data 05.04.2018 - 10:40
fonte
5

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
    
risposta data 13.08.2018 - 04:07
fonte
-3

Aggiungi la chiave pubblica in:

.ssh/known_hosts

La chiave pubblica di solito è attiva:

/home/user/.ssh/id_rsa.pub

Spero che questo aiuti

    
risposta data 20.04.2012 - 13:04
fonte

Leggi altre domande sui tag