SVN + SSH, non dover fare ogni volta ssh-add? (Mac OS)


105

So che la risposta è là fuori, ma sono abbastanza Unix-stupido e probabilmente non riconoscerei la soluzione se mi colpisse in faccia.

Sono su un Mac e mi connetto a un server SVN tramite tunneling SSH. Devo farlo ssh-add privateKey.txtogni 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 in modo da non doverlo fare ogni volta? Aggiungerlo al mio portachiavi? Qualche file di configurazione? Avviare lo script?

Risposte:


172

Innanzitutto, sposta il file della chiave privata in ~/.ssh. Questo non è strettamente necessario, ma è il luogo standard per queste cose.

Allora corri ssh-add -K ~/.ssh/privateKey.txt. Se necessario, richiederà la passphrase, quindi la aggiungerà al portachiavi.

Dopodiché, non dovresti fare nient'altro. Una spiegazione leggermente più lunga è disponibile qui .


17
Immagino valga la pena notare esplicitamente che questa è una cosa per Mac, non una cosa universale per Unix. Su Ubuntu, ssh-addnon posso sostenere -Kargomenti.
Mark Amery

2
Vorrei sottolineare che mentre l'articolo collegato è per Leopard, funziona ancora in OS X Mavericks.
Josh Brown

1
Forse qualcuno ha un comando equivalente per altri ambienti? ssh-add di mysysgit non accetta nemmeno l'argomento -K
Blake

5
Per qualche motivo quando lo faccio -KI ho ancora il problema dopo il riavvio
Mat Teague il

7
Sei su macOS Sierra? Il comportamento è cambiato e ora devi aggiungere esplicitamente le tue chiavi a ssh-agent all'accesso: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley

49

Memorizzazione di passphrase nel portachiavi

Per memorizzare la passphrase per la tua chiave predefinita nel Portachiavi, apri un Terminale ed esegui:

ssh-add -K

E per memorizzare la passphrase per una diversa esecuzione della chiave:

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

Quando ti viene richiesta la passphrase, inseriscila e il gioco è fatto.

Non sarà mai necessario eseguire ssh-add né immettere di nuovo la passphrase.

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


20

Dopo molte esplorazioni, penso di aver trovato completamente la risposta a questo problema. Per prima cosa, assicurati di farlo ssh-add -K ~/.ssh/your_key_here. Questo aggiunge la chiave al tuo portachiavi. In alcuni punti ho letto che questo è sufficiente, ma non ne ero certo. Questo è anche specifico per mac, quindi se devi farlo su un altro sapore unix, non avrai necessariamente questa opzione.

Per buona misura, ho modificato il ~/.ssh/configfile (potrebbe essere necessario crearlo) in modo che punti a tutte le chiavi che ho. Il mio ha quanto segue:

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

Secondo la pagina man di ssh_config, li proverà in ordine. Non sono sicuro che i primi tre predefiniti che ho elencato debbano essere lì, ma li ho inclusi comunque.


Non ci sono -Kflag su mac os x perssh-add
dr.dimitru

2
V'è una -Kbandiera su OS X per ssh-add. Oltre a ciò, questa dovrebbe essere la risposta selezionata.
kaiser

1
Assicurati di utilizzare /usr/bin/ssh-addl'homebrew fornito /usr/local/bin/ssh-addnon fornisce l'opzione -K.
Remco Wendt

2
Una volta che ~/.ssh/configè presente, non è necessario eseguire il ssh-addcomando ogni volta dopo aver riavviato la macchina.
grandine

7

Da macOS 10.12.2 puoi usare l' UseKeychainopzione. Leggi di più qui o dai un'occhiata 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 fai quanto segue:

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


3
Questo deve salire. Molto importante !
quarezz

2

Non ho molta esperienza con i Mac, quindi non sono sicuro che questa versione sia ok per il tuo, ma dai un'occhiata a http://www.phil.uu.nl/~xges/ssh/

Se questa particolare app non funziona, è quello che stai cercando comunque - ssh agent. Su scatole unix-like, vorresti avviare l'intero window manager attraverso quello, 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à. si installa bene con macports usando:

sudo port install sshkeychain

usa il portachiavi per memorizzare le password, e puoi semplicemente avviarlo all'avvio della tua sessione di accesso (usando al primo avvio il solito clic destro sull'icona del dock + "lancia all'avvio")

Nota che svn di Apple utilizza il portachiavi per memorizzare le password ma non necessariamente il binario svn che creeresti con macports.


0

Aggiungi la tua chiave al portachiavi eseguendo:

ssh-add -K ~/.ssh/id_rsa

e modifica il tuo file ssh config ( ~/.ssh/config) per caricare automaticamente le chiavi dal portachiavi a ssh-agent ( AddKeysToAgent yesopzione) e memorizzare le passphrase nel portachiavi ( UseKeychain yesopzione):

Host *
 AddKeysToAgent yes
 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.