SVN + SSH, nicht jedes Mal ssh-add machen müssen? (Mac OS)


105

Ich weiß, dass die Antwort da draußen ist, aber ich bin ziemlich dumm unter Unix und würde die Lösung wahrscheinlich nicht erkennen, wenn sie mir ins Gesicht schlagen würde.

Ich bin auf einem Mac und verbinde mich über SSH-Tunneling mit einem SVN-Server. Ich mussssh-add privateKey.txt jedes Mal eine Verbindung zum SVN-Server herstellen (sowohl Cornerstone als auch Xcode stellen eine Verbindung zum SVN her).

Gibt es eine Möglichkeit, den Schlüssel irgendwo zu "speichern", damit ich dies nicht jedes Mal tun muss? Zu meinem Schlüsselbund hinzufügen? Eine Konfigurationsdatei? Skript starten?

Antworten:


172

Verschieben Sie zunächst Ihre private Schlüsseldatei in ~/.ssh . Dies ist nicht unbedingt notwendig, aber es ist der Standardort für solche Dinge.

Dann renne ssh-add -K ~/.ssh/privateKey.txt. Bei Bedarf werden Sie zur Eingabe Ihrer Passphrase aufgefordert und anschließend zu Ihrem Schlüsselbund hinzugefügt.

Danach sollten Sie nichts mehr tun müssen. Eine etwas längere Erklärung finden Sie hier .


17
Ich denke, es ist erwähnenswert, dass dies eine Mac-Sache ist, keine universelle Unix-Sache. Unter Ubuntu ssh-addkann ich kein -KArgument annehmen .
Mark Amery

2
Ich möchte darauf hinweisen, dass der verlinkte Artikel zwar für Leopard ist, dies jedoch in OS X Mavericks weiterhin funktioniert.
Josh Brown

1
Vielleicht hat jemand einen gleichwertigen Befehl für andere Umgebungen? mysysgits ssh-add akzeptiert auch das -K-Argument nicht
Blake

5
Aus irgendeinem Grund, wenn ich -KI habe immer noch das Problem nach dem Neustart
Mat Teague

7
Bist du auf macOS Sierra? Das Verhalten hat sich geändert und Sie müssen jetzt Ihre Schlüssel explizit zum ssh-agent beim Login hinzufügen: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley

49

Passphrasen im Schlüsselbund speichern

Um die Passphrase für Ihren Standardschlüssel im Schlüsselbund zu speichern, öffnen Sie ein Terminal und führen Sie Folgendes aus:

ssh-add -K

Und um die Passphrase für einen anderen Schlüssellauf zu speichern:

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

Wenn Sie zur Eingabe Ihrer Passphrase aufgefordert werden, geben Sie diese ein und das wars.

Sie müssen nie wieder ssh-add ausführen oder Ihre Passphrase eingeben.

Antwort von dieser Site: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


20

Nach langem Erkunden habe ich die Antwort auf dieses Problem vollständig gefunden. Stellen Sie zunächst sicher, dass Sie dies tun ssh-add -K ~/.ssh/your_key_here. Dies fügt den Schlüssel zu Ihrem Schlüsselbund hinzu. An einigen Stellen habe ich gelesen, dass dies ausreicht, aber ich war mir nicht sicher. Dies ist auch mac-spezifisch. Wenn Sie dies für eine andere Unix-Version tun müssen, steht Ihnen diese Option nicht unbedingt zur Verfügung.

Aus gutem Grund habe ich die ~/.ssh/configDatei so bearbeitet (möglicherweise müssen Sie sie erstellen), dass sie auf alle Schlüssel verweist, die ich habe. Meins hat folgendes:

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

Laut der Manpage für ssh_config wird es diese in der richtigen Reihenfolge versuchen. Ich bin mir nicht sicher, ob die ersten drei von mir aufgelisteten Standardeinstellungen vorhanden sein müssen, aber ich habe sie trotzdem aufgenommen.


Es gibt keine -KFlagge auf Mac ssh-add
OS

2
Unter OS X gibt es ein -KFlag für ssh-add. Zusätzlich sollte dies die ausgewählte Antwort sein.
Kaiser

1
Stellen Sie sicher, dass Sie /usr/bin/ssh-adddas mitgelieferte Homebrew /usr/local/bin/ssh-addverwenden, das die Option -K nicht bietet.
Remco Wendt

2
Sobald das vorhanden ~/.ssh/configist, muss der ssh-addBefehl nicht jedes Mal nach dem Neustart des Computers ausgeführt werden.
Hagel

7

Seit macOS 10.12.2 können Sie die UseKeychainOption verwenden. Lesen Sie hier mehr oder schauen Sie hinein 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''.

Gehen Sie also einfach wie folgt vor:

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


3
Das muss steigen. Sehr wichtig !
Quarezz

2

Ich habe nicht viel Erfahrung mit Macs, bin mir also nicht sicher, ob diese Version für Sie in Ordnung ist, aber schauen Sie unter http://www.phil.uu.nl/~xges/ssh/ nach.

Wenn diese spezielle App nicht funktioniert, suchen Sie sowieso danach - ssh agent. Bei Unix-ähnlichen Boxen möchten Sie Ihren gesamten Fenstermanager damit starten, um den globalen Effekt zu erzielen. In osx ist dies jedoch möglicherweise nicht möglich.

Weitere Informationen: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


1

sshkeychain ist eine Möglichkeit. Installiert gut mit Macports mit:

sudo port install sshkeychain

Der Schlüsselbund wird zum Speichern von Kennwörtern verwendet. Sie können ihn einfach beim Start Ihrer Anmeldesitzung starten (indem Sie beim ersten Start den üblichen Rechtsklick auf das Dock-Symbol + "Beim Start starten" verwenden).

Beachten Sie, dass Apples SVN Schlüsselbund zum Speichern von Passwörtern verwendet, jedoch nicht unbedingt die SVN-Binärdatei, die Sie mit Macports erstellen würden.


0

Fügen Sie Ihren Schlüssel zum Schlüsselbund hinzu, indem Sie Folgendes ausführen:

ssh-add -K ~/.ssh/id_rsa

und bearbeiten Sie Ihre ssh config ( ~/.ssh/config) - Datei, um automatisch Schlüssel aus der Schlüsselkette in den ssh-Agenten zu laden ( AddKeysToAgent yesOption) und Passphrasen im Schlüsselbund zu speichern ( UseKeychain yesOption):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.