Ich verstehe, dass der Schlüsselbund seit Mac OS X Leopard das Speichern von SSH-Schlüsseln unterstützt. Könnte bitte jemand erklären, wie diese Funktion funktionieren soll.
Ich habe einige von mir generierte RSA-Schlüssel in meinem ~ / .ssh-Verzeichnis gespeichert, um auf verschiedene Server zugreifen zu können. Ich habe keine Passphrasen für diese Schlüssel. Zur Zeit verwende ich die folgenden Befehle im Terminal, um mich bei diesen Servern anzumelden:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh user @ server
(Ich habe einige Bash-Funktionen geschrieben, um dies zu vereinfachen.)
Gibt es eine bessere Möglichkeit, dies mit dem Schlüsselbund zu tun?
ssh-add
, um meine RSA-Identitäten dem Standard-SSH-Agenten hinzuzufügen, der beim Anmelden gestartet wurde.$HOME/.ssh/authorized_keys
auf diesem Server hinzufügen . Der ssh-agent + Schlüsselbund von Mac OS wird nur zum Speichern der Passphrase für Ihre lokalen ssh-Schlüssel verwendet. Es ist nicht dazu gedacht, Remote-Passwörter über vorhandene SSH-Verbindungen zu senden.ssh -v
diese Option, um zu diagnostizieren, was ssh gerade tut. Verwenden Sie auchsshd -p 8900 -v
auf der Serverseite und umssh -v remote:8900
zu diagnostizieren, was sshd tut.Ab der Leopard-Version von OS X ist ssh-agent enger in Keychain integriert. Es ist möglich, die Passphrasen aller Ihrer SSH-Schlüssel sicher im Schlüsselbund zu speichern, von dem ssh-agent sie beim Start liest. Das Fazit ist, dass es einfach ist, Ihre Schlüssel mit Passwörtern zu sichern, aber niemals die Passphrase eingeben müssen, um sie zu verwenden! Hier ist, wie:
Fügen Sie die Passphrase zu jedem SSH-Schlüssel zum Schlüsselbund hinzu: (Option -k lädt nur einfache private Schlüssel, überspringt Zertifikate)
(Beachten Sie, das ist eine Hauptstadt K)
Jedes Mal, wenn Sie Ihren Mac neu starten, werden alle SSH-Schlüssel in Ihrem Schlüsselbund automatisch geladen. Sie sollten in der Lage sein, die Schlüssel in der Keychain Access-App sowie von der Befehlszeile aus zu sehen:
quelle
ssh-add -l
listet keine Schlüssel auf, wenn eine Remote-Verbindung hergestellt wird (wobei $ DISPLAY nicht festgelegt ist). Hier müssen spezielle Tricks angewendet werden, um den Schlüsselbund zu verwenden (z. B. in superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
gibt "Der Agent hat keine Identitäten" zurück. (ps aux
enthält/usr/bin/ssh-agent -l
).Ab macOS Sierra , ssh-agent nicht mehr Auto-Lasten vorher SSH - Schlüssel geladen , wenn Sie sich in Ihrem Konto anmelden. Dies ist eine Absicht von Apple, sie wollten sich wieder an die Mainstream- OpenSSH- Implementierung anpassen . [1]
Wie hier erklärt , ist dies die empfohlene Methode seit macOS 10.12.2 :
Fügen Sie Ihrer
~/.ssh/config
Datei die folgenden Zeilen hinzu :Jeder Schlüssel, den Sie mit dem Befehl zum ssh-agent hinzufügen,
ssh-add /path/to/your/private/key/id_rsa
wird automatisch zum Schlüsselbund hinzugefügt und sollte beim Neustart automatisch geladen werden.Folgendes ist veraltet (wird als Referenz aufbewahrt).
Um zum vorherigen Verhalten zurückzukehren, möchten Sie den
ssh-add -A
Befehl ausführen (der alle SSH-Schlüssel mit Passphrasen auf Ihrem Schlüsselbund automatisch lädt), wenn Sie sich anmelden. Gehen Sie hierzu folgendermaßen vor:Fügen Sie zunächst alle Schlüssel hinzu, die Sie mit dem Befehl automatisch in den ssh-agent laden möchten
ssh-add -K /absolute/path/to/your/private/key/id_rsa
. Das-K
Argument stellt sicher, dass die Passphrase zum Schlüsselbund von macOS hinzugefügt wird . Stellen Sie sicher, dass Sie den absoluten Pfad zum Schlüssel verwenden. Wenn Sie einen relativen Pfad verwenden, wird das automatisch gestartete Skript Ihren Schlüssel nicht finden.Stellen Sie sicher, dass alle Ihre Schlüssel bei der Eingabe als hinzugefügt angezeigt werden
ssh-add -A
.Erstellen Sie eine Datei mit dem Namen
com.yourusername.ssh-add.plist
in~/Library/LaunchAgents/
den Inhalten unten. Plist-Dateien wie diese werdenlaunchd
zum Ausführen von Skripten verwendet, wenn du dich anmeldest . [2] [3]Bitte geben Sie
launchd
die laden plist - Datei die Sie gerade erstellt durch die Ausführung:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.Und Sie sollten bereit sein.
quelle
Es gibt einen einfacheren Weg als Ricardos Antwort, um Ihr Passwort zwischen Sitzungen / Neustarts Ihres Mac mit 10.12 Sierra beizubehalten.
ssh-add -K ~/.ssh/id_rsa
Hinweis: Ändern Sie den Pfad dahin, wo sich Ihr Schlüssel id_rsa befindet.
ssh-add -A
Erstellen Sie die folgende
~/.ssh/config
Datei (oder bearbeiten Sie sie, falls vorhanden) :Jetzt wird das Passwort zwischen Neustarts gespeichert!
Apple hat das Verhalten von ssh-agent in macOS 10.12 Sierra absichtlich dahingehend geändert, dass die vorherigen SSH-Schlüssel nicht mehr automatisch geladen werden, wie in dieser Diskussion zu OpenRadar , Twitter und Technical Note von Apple beschrieben . Die obige Lösung ahmt das alte Verhalten von El Capitan nach und speichert Ihr Passwort.
quelle
ssh-add -K
, um meinen SSH-Schlüssel zum Apple-Schlüsselbund hinzuzufügen?Hinweis: Informationen zu macOS Sierra finden Sie in der aktuelleren Antwort von ChrisJF .
Die [Antwort von Jeff McCarrell] [2] ist richtig, mit der Ausnahme, dass der Befehl zum Hinzufügen der Passphrase einen Bindestrich anstelle eines Bindestrichs enthält, dh
–K
anstatt-K
eine Nachricht zu erzeugen, die bewirkt, dass–K: No such file or directory
. Es sollte lauten:quelle
ssh-add -K
illegal option -- K
. Kleinbuchstabe k ist optional aufgeführt.-K
Ich vermute, Sie verwenden nicht den Standardbefehl
ssh
. Hast dussh
über Ports installiert? Versuchen Sie festzustellenwhich ssh
, welchenssh
Befehl Sie verwenden.Normalerweise sollte ein Dialogfeld angezeigt werden, in dem Sie nach Ihrem Kennwort gefragt werden, sofern es nicht bereits in Ihrem Schlüsselbund gespeichert ist.
quelle
Ich hatte ein ähnliches Problem beim Versuch, mich mit einem Client-SSH-Zertifikat anzumelden. In diesem speziellen Fall war es für den Zugriff auf ein Git-Repository. Das war die Situation:
~/.ssh/
~/Library/Keychains/login.keychain
->
Remote Mac->
Git / SSH ServerAls ich über einen Remote-Desktop eine Verbindung zum Remote-Mac herstellte, hatte ich kein Problem. Beim Herstellen einer Verbindung mit SSH zum Remote-Mac wurde ich jedoch jedes Mal nach der SSH-Passphrase gefragt. Die folgenden Schritte haben es für mich gelöst.
security unlock-keychain
Die Passphrase wird im Anmeldeschlüsselbund gespeichert. Dadurch wird die Sperre aufgehoben und ssh-agent kann darauf zugreifen.eval `ssh-agent -s`
Startet ssh-agent für die Shell. Die Passphrase wird vom Schlüsselbund abgerufen und zum Entsperren des privaten SSH-Schlüssels verwendet.eval `ssh-agent -k`
Töte den laufenden ssh-Agenten.security lock-keychain
Schließen Sie den Schlüsselbund wieder.quelle
eval \$(ssh-agent)
per Re: Remote Login und Schlüsselbund arbeiten . Wenn nicht innerhalb eines Aliaseval $(ssh-agent)
funktioniert ( ohne den Backslash $ ).Siehe auch:
... Hinzufügen dieser Notiz, da weitere Details angefordert wurden: Mit dem Befehl "security" können Schlüssel (und andere Dinge) direkt in Keychains importiert werden. Das Schöne ist, dass Sie im Gegensatz zu ssh-add den Schlüsselbund angeben können. Dadurch ist es möglich, direkt in das System Keychain zu importieren ("man security" um zu lernen wie)
quelle
Die beste und von Apple beabsichtigte Lösung (seit macOS 10.12.2) wird hier beschrieben
quelle
>>
ist gefährdet, wenn Sie den Befehl mehrmals eingeben. Mach lieber eine manuelle Ausgabe der Datei, wie von ChrisJF als Antwort beschrieben .