SVN + SSH, ne pas avoir à faire ssh-add à chaque fois? (Mac OS)

105

Je sais que la réponse est là-bas, mais je suis plutôt idiot Unix et je ne reconnaîtrais probablement pas la solution si elle me frappait au visage.

Je suis sur un Mac, je me connecte à un serveur SVN via un tunnel SSH. Je dois le faire à ssh-add privateKey.txtchaque fois que je veux me connecter au serveur SVN (Cornerstone et Xcode se connectent à SVN).

Existe-t-il un moyen de "sauvegarder" la clé quelque part pour ne pas avoir à le faire à chaque fois? L'ajouter à mon trousseau? Un fichier de configuration? Lancer le script?

James J
la source

Réponses:

172

Commencez par déplacer votre fichier de clé privée dans ~/.ssh. Ce n'est pas strictement nécessaire mais c'est l'endroit standard pour de telles choses.

Puis cours ssh-add -K ~/.ssh/privateKey.txt. Il vous demandera votre phrase secrète si nécessaire, puis l'ajoutera à votre trousseau.

Après cela, vous ne devriez plus avoir à faire autre chose. Une explication un peu plus longue est disponible ici .

Nicholas Riley
la source
17
Je pense qu'il vaut la peine de noter explicitement que c'est un truc Mac, pas un truc Unix universel. Sur Ubuntu, ssh-addje ne peux pas accepter d' -Kargument.
Mark Amery
2
Je voudrais noter que même si l'article lié est pour Leopard, cela fonctionne toujours dans OS X Mavericks.
Josh Brown
1
Peut-être que quelqu'un a une commande équivalente pour d'autres environnements? ssh-add de mysysgit n'accepte pas non plus l'argument -K
Blake
5
Pour une raison quelconque, quand je fais -KI a toujours le problème après le redémarrage
Mat Teague
7
Êtes-vous sur macOS Sierra? Le comportement a changé et vous devez maintenant ajouter explicitement vos clés à ssh-agent lors de la connexion: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley
49

Stockage des phrases de passe dans le trousseau

Pour stocker la phrase secrète de votre clé par défaut dans le trousseau, ouvrez un terminal et exécutez:

ssh-add -K

Et pour stocker la phrase secrète pour une exécution de clé différente:

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

Lorsque vous êtes invité à entrer votre mot de passe, entrez-le et c'est tout.

Vous n'aurez plus jamais besoin d'exécuter ssh-add ni de saisir à nouveau votre mot de passe.

Réponse tirée de ce site: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

Adam
la source
20

Après de nombreuses recherches, je pense avoir trouvé la réponse à ce problème complètement. Tout d'abord, assurez-vous de le faire ssh-add -K ~/.ssh/your_key_here. Cela ajoute la clé à votre trousseau. À certains endroits, j'ai lu que cela suffisait, mais je n'étais pas certain. Ceci est également spécifique au mac, donc si vous devez le faire sur une autre saveur Unix, vous n'aurez pas nécessairement cette option.

Pour faire bonne mesure, j'ai édité le ~/.ssh/configfichier (vous devrez peut-être le créer) pour qu'il pointe vers toutes les clés dont je dispose. Le mien a ce qui suit:

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

Selon la page de manuel de ssh_config, il essaiera ces derniers dans l'ordre. Je ne sais pas si les trois premiers par défaut que j'ai énumérés doivent être là, mais je les ai quand même inclus.

mitalia
la source
Il n'y a pas de -Kdrapeau sur mac os x pourssh-add
dr.dimitru
2
Il existe un -Kindicateur sur OS X pour ssh-add. En plus de cela, cela devrait être la réponse choisie.
kaiser
1
Assurez-vous que vous utilisez /usr/bin/ssh-addle homebrew fourni /usr/local/bin/ssh-addne fournit pas l'option -K.
Remco Wendt le
2
Une fois que le ~/.ssh/configest là, pas besoin d'exécuter la ssh-addcommande à chaque fois après le redémarrage de la machine.
grêle
7

Depuis macOS 10.12.2, vous pouvez utiliser l' UseKeychainoption. Lisez plus ici ou regardez 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''.

Alors faites simplement ce qui suit:

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

Ben
la source
3
Cela doit augmenter. Très important !
quarezz
2

Je n'ai pas beaucoup d'expérience avec les macs, donc je ne sais pas si cette version vous convient, mais jetez un œil à http://www.phil.uu.nl/~xges/ssh/

Si cette application particulière ne fonctionne pas, c'est ce que vous recherchez de toute façon - ssh agent. Sur les boîtes de type Unix, vous voudriez démarrer tout votre gestionnaire de fenêtres à travers cela, pour obtenir l'effet global, mais cela pourrait ne pas être possible dans osx.

Quelques informations supplémentaires: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

viraptor
la source
1

sshkeychain est une possibilité. s'installe correctement avec macports en utilisant:

sudo port install sshkeychain

il utilise le trousseau pour stocker les mots de passe, et vous pouvez simplement le lancer au démarrage de votre session de connexion (en utilisant au premier lancement le clic droit habituel dans l'icône du dock + "lancer au démarrage")

Notez que svn d'Apple utilise le trousseau pour stocker les mots de passe, mais pas nécessairement le binaire svn que vous construirez avec macports.

Meduz
la source
0

Ajoutez votre clé au trousseau en exécutant:

ssh-add -K ~/.ssh/id_rsa

et éditez votre ~/.ssh/configfichier ssh config ( ) pour charger automatiquement les clés du AddKeysToAgent yeskeychain vers l'agent ssh ( option) et stocker les mots de passe dans le keychain ( UseKeychain yesoption):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Jakub Kukul
la source