2009-12-15 14 views
98

So che la risposta è là fuori, ma sono piuttosto stupido Unix e probabilmente non riconoscerei la soluzione se mi avesse colpito in faccia.SVN + SSH, non dover fare ssh-add ogni volta? (Mac OS)

Sono su un Mac, connesso a un server SVN tramite tunnel SSH. Devo fare il ssh-add privateKey.txt ogni volta che voglio connettermi al server SVN (sia Cornerstone che Xcode si connettono a SVN).

C'è un modo per "salvare" la chiave da qualche parte quindi non devo farlo ogni volta? Aggiungilo al mio portachiavi? Qualche file di configurazione? Start up script?

risposta

167

In primo luogo, spostare il file della chiave privata in ~/.ssh. Questo non è strettamente necessario, ma è il posto standard per queste cose.

Quindi eseguire ssh-add -K ~/.ssh/privateKey.txt. Richiederà la passphrase se necessario, quindi la aggiungerà al tuo portachiavi.

Dopo questo, non dovresti fare altro. Una spiegazione leggermente più lunga è disponibile here.

+16

ho dato vale la pena notare esplicitamente che questa è una cosa Mac, non è una cosa universale, Unix. Su Ubuntu, 'ssh-add' non può accettare un argomento' -K'. –

+2

Vorrei notare che mentre l'articolo collegato è per Leopard, funziona ancora in OS X Mavericks. –

+1

Forse qualcuno ha un comando equivalente per altri ambienti? mysysgit's ssh-add non accetta l'argomento -K, sia – Blake

2

non ho molta esperienza con i Mac, quindi non so se questa versione è ok per il vostro, ma hanno uno sguardo al http://www.phil.uu.nl/~xges/ssh/

Se questa particolare applicazione non funziona, che è quello che stai cercando per sempre - ssh agent. Su finestre unix-like, vorrai avviare l'intero window manager attraverso questo, per ottenere l'effetto globale, ma potrebbe non essere possibile in osx.

qualche informazione in più: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

1

sshkeychain è una possibilità. installa bene con macports utilizzando:

sudo port install sshkeychain 

usa il portachiavi per memorizzare le password, e si può semplicemente lanciarlo alla start-up della vostra sessione di login (utilizzando al primo lancio il solito destro-ght clic nella icona dock + "avvio all'avvio")

Si noti che la svn di Apple utilizza il portachiavi per memorizzare le password, ma non necessariamente il binario svn che si dovrebbe costruire con Macport.

18

Dopo molte esplorazioni, penso di aver trovato la risposta a questo problema completamente. Innanzitutto, assicurati di fare ssh-add -K ~/.ssh/your_key_here. Questo aggiunge la chiave al tuo portachiavi. Alcuni posti, ho letto che questo è abbastanza, ma non ero certo. Anche questo è specifico per Mac, quindi se hai bisogno di farlo su un altro sapore Unix, non avrai necessariamente questa opzione.

Per buona misura, ho modificato il file ~/.ssh/config (potrebbe essere necessario crearlo) per puntare a tutte le chiavi che ho. Il mio è il seguente:

IdentityFile ~/.ssh/identity 
IdentityFile ~/.ssh/id_rsa 
IdentityFile ~/.ssh/id_dsa 
IdentityFile ~/.ssh/my_other_identity_here 
IdentityFile ~/.ssh/yet_another_identity_here 

Secondo il man page per ssh_config, proverà questi in ordine. Non sono sicuro che i primi tre predefiniti che ho elencato debbano essere lì, ma li ho comunque inclusi.

+0

Non c'è il contrassegno '-K' su mac os x per 'ssh-add' –

+2

Ci ** è ** un simbolo' -K' su OS X per 'ssh-add'. Oltre a ciò, questa dovrebbe essere la risposta selezionata. – kaiser

+1

Assicuratevi di usare '/ usr/bin/ssh-add' l'homebrew fornito'/usr/local/bin/ssh-add' non fornisce l'opzione -K. –

49

memorizzare le passphrase nel portachiavi

Per memorizzare la passphrase per la chiave predefinita nel portachiavi aprire un terminale ed eseguire:

ssh-add -K 

E per memorizzare la passphrase per una diversa corsa chiave:

ssh-add -K /path/to/private/key/file 

Quando viene richiesta la passphrase, inserirla e basta.

Non sarà mai necessario eseguire ssh-add né inserire nuovamente la passphrase.

Risposta preso da questo sito: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

3

Dal MacOS 10.12.2 è possibile utilizzare l'opzione UseKeychain. Read more here oppure esaminare man ssh_config.

 UseKeychain 
     On macOS, specifies whether the system should search for passphrases in the user's keychain 
     when attempting to use a particular key. When the passphrase is provided by the user, this 
     option also specifies whether the passphrase should be stored into the keychain once it has 
     been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''. 

Quindi, solo effettuare le seguenti operazioni:

echo "UseKeychain yes" >> ~/.ssh/config

+1

Questo deve salire. **Molto importante**! – quarezz

Problemi correlati