Ich muss diesen Befehl seit dem Upgrade auf macOS ausführen:
ssh-add -K
Behebt das Problem nach dem Neustart, aber ich muss diesen Befehl jedes Mal ausführen, wenn ich mich an meinem Computer anmelde.
Wenn ich den obigen Befehl nicht ausführe, werden meine Eingaben ~/.ssh
übersprungen und ich werde nach dem Serverkennwort gefragt, um die Verbindung herzustellen.
$ ssh-add -K
gibt mirssh-add: illegal option -- K
-K
. Eine Lösung finden Sie in der Antwort von @JakeGould.Antworten:
Ab macOS Sierra 10.12.2 hat Apple eine
ssh_config
Option namens hinzugefügt ,UseKeychain
die eine "richtige" Lösung für das Problem ermöglicht. Fügen Sie Ihrer~/.ssh/config
Datei Folgendes hinzu :Von der
ssh_config
man
Seite am 10.12.2:quelle
IdentityFile ~/.ssh/id_rsa
für überflüssig und nicht erforderlich (wenn man sich die Standardoptionen ansieht). Ich habe diese Option noch nie in meiner ssh-Konfigurationsdatei festgelegt.~/.ssh/config~
ist vorzuziehen, da es das Problem auf derssh
Ebene löst . Nicht 100% sicher, dass der.bash_profile
Mod für GUI-Clients mit ssh ohne Shell funktioniert.Ich hatte dieses Problem auch, als ich versuchte, Code mit Capistrano bereitzustellen . Sehr frustrierend. Ich kenne zwei Methoden, um dieses Problem zu lösen.
Methode 1: Fügen Sie dem SSH-Agenten alle bekannten Schlüssel hinzu.
Eine Lösung, die ich gefunden habe, ist die Ausführung
ssh-add
mit der-A
Option, die dem SSH-Agenten alle bekannten Identitäten hinzufügt, wobei alle in Ihrem Schlüsselbund gespeicherten Passwörter verwendet werden:Das funktioniert jetzt, bleibt aber nach einem Neustart nicht erhalten. Wenn Sie sich also nie wieder darum kümmern möchten, öffnen Sie einfach die
~/.bash_profile
Datei Ihres Benutzers wie folgt:Und füge diese Zeile unten hinzu:
Wenn Sie jetzt ein neues Terminalfenster öffnen, sollte alles in Ordnung sein!
Methode 2: Fügen Sie dem Agenten nur SSH-Schlüssel hinzu, die sich im Schlüsselbund befinden .
Während die
ssh-add -A
Option für die meisten einfachen Fälle funktionieren sollte, stieß ich kürzlich auf ein Problem, bei dem 6-7 Vagrant-Boxen (die SSH-Schlüssel / -Identitäten für den Zugriff verwenden) auf einem Computer eingerichtet wurden, zusätzlich zu den am häufigsten verwendetenid_rsa.pub
.Kurz gesagt, ich wurde aufgrund zu vieler fehlgeschlagener Versuche, die auf SSH-Schlüsseln / -Identitäten basierten, von einem Remote-Server gesperrt, da der Serverzugriff auf einem Kennwort beruhte und SSH-Schlüssel / -Identitäten SSH-Schlüssel / -Identitäten sind. Also hat der SSH-Agent alle meine SSH-Schlüssel ausprobiert , ist fehlgeschlagen und ich konnte nicht einmal zur Passwortabfrage gelangen.
Das Problem ist, dass
ssh-add -A
jeder einzelne SSH-Schlüssel / jede einzelne SSH-Identität willkürlich zum Agenten hinzugefügt wird, auch wenn dies nicht erforderlich ist. wie im Fall von Vagrant-Boxen.Meine Lösung nach vielen Tests war wie folgt.
Wenn Sie Ihrem Agenten mehr SSH-Schlüssel / -Identitäten hinzugefügt haben, als Sie benötigen,
ssh-add -l
löschen Sie sie zunächst wie folgt aus dem Agenten:Danach starten Sie den SSH-Agenten wie folgt als Hintergrundprozess:
Jetzt wird es komisch und ich bin mir nicht sicher warum. In einigen Fällen können Sie
~/.ssh/id_rsa
dem Agenten den Schlüssel / die Identität wie folgt hinzufügen :Geben Sie Ihre Passphrase ein, drücken ReturnSie und los geht's.
In anderen Fällen reicht es jedoch aus, dies auszuführen, um den Schlüssel / die Identität hinzuzufügen:
Wenn das alles geklappt hat, geben
ssh-add -l
Sie ein und Sie sollten einen einzigen SSH-Schlüssel / eine Identität sehen.Alles gut? Jetzt öffne dein
.bash_profile
:Und füge diese Zeile unten hinzu; kommentiere oder entferne die
-A
Version, wenn du das hast:Dadurch kann der SSH-Schlüssel / die SSH-Identität bei jedem Start / Neustart erneut auf den SSH-Agenten geladen werden.
UPDATE: Apple hat jetzt eine
UseKeychain
Option zu den offenen SSH-Konfigurationsoptionen hinzugefügt und zieht auchssh-add -A
eine Lösung in Betracht .Ab macOS Sierra 10.12.2 hat Apple eine
UseKeychain
Konfigurationsoption für SSH-Konfigurationen hinzugefügt. Das Überprüfen der Manpage (viaman ssh_config
) zeigt die folgenden Informationen:Was darauf hinausläuft, dass Apple die Lösung entweder wie in diesem Open Radar-Ticket erläutert
ssh-add -A
zu Ihrer hinzufügt oder als eine der Optionen in einem pro Benutzer hinzufügt ..bash_profile
UseKeychain
~/.ssh/config
quelle
ssh-add -K [path to key]
geben Sie pw ein, wenn Sie dazu aufgefordert werden. Der Schlüsselbund speichert das Passwort und ssh-add erhält es danach von dort.UseKeychain
undAddKeysToAgent
automatisch hinzufügt. Kein Shell-Scripting erforderlich. Die aktualisierten Informationen für 10.12.2ssh-add -A
in Ihrem RC-Skript¯\_(ツ)_/¯
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.Ich füge diese Antwort hinzu, weil:
IdentityFile ~/.ssh/id_rsa
Zeile hinzuzufügen , aber diese Option wird zum automatischen Laden der Schlüssel nicht benötigt (und bindet tatsächlich diesen bestimmten Schlüssel für den Host-Abschnitt, dem Sie ihn hinzufügen, an den Sie nicht möchten, wenn Sie andere Schlüssel verwenden verschiedene hots).UseKeychain
, aber das reicht nicht aus, um die Schlüsselssh-agent
nach einem Neustart beizubehalten.quelle
ssh-add -L
und es wird berichtenThe agent has no identities
. Nichts wird da sein, bis Sie eine Verbindung herstellen. DieAddKeysToAgent
Schlüssel bleiben in keiner Weise zwischen Neustarts erhalten!Ich habe einen kurzen Beitrag zu diesem Thema geschrieben , der Ihnen helfen könnte.
Eine Lösung ruft
ssh-add -A
bei jedem Start den Befehl auf.Fügen Sie einfach eine
.plist
Datei mit dem folgenden Inhalt zum Pfad hinzu~/Library/LaunchAgents/
oder erstellen Sie eine mit der Lingon- App:quelle
Seit macOS 10.12.2 können Sie die
UseKeychain
Option verwenden. Lesen Sie hier mehr oder schauen Sie reinman ssh_config
.Also mach einfach folgendes:
echo "UseKeychain yes" >> ~/.ssh/config
quelle
>>
ist gefährdet, wenn Sie den Befehl mehrmals eingeben. Mach lieber eine manuelle Ausgabe der Datei, wie von mluisbrown answer oder ChrisJF answer beschrieben .Ich fand, dass
ssh-add -K
gab mir " illegale Option - K ". Dies lag daran, dass ssh-add eine seltsame Version von / usr / local / bin war (von brew installiert?). Ich konnte den Schlüssel mithilfe des Befehls ssh-add in / usr / bin hinzufügen:quelle
Ich hatte dieses Problem schon einmal und habe einen Weg gefunden, dies zu umgehen. Ich habe gerade eine Datei mit dem Namen
config
in meinem~/.ssh
Ordner erstellt, in der ich die folgenden Zeilen eingefügt habe:Ich bin nicht sicher warum, aber
Host
undHostName
beide sind wichtig. In meinem Fall hat die Lösung nicht funktioniert, wenn einer von ihnen nicht anwesend war.Dann habe ich einfach eine gemacht
ssh-add -K
und es hat auch nach dem Neustart funktioniert.quelle
Wenn Sie eine andere Version von ssh verwenden (z. B. über Homebrew installiert), funktionieren die oben genannten Lösungen nicht sofort. Zum Beispiel
AddKeysToAgent yes
undUseKeychain yes
in der.ssh/config
Datei werden von Nicht-Apple-ssh-Versionen nicht erkannt und verursachen einen Fehler. Dasselbe gilt für die Option-A
oder-K
für denssh
Client.Das bedeutet, dass die Antwort von @mluisbrown überhaupt nicht funktioniert. Sie können Methode 1 von @JakeGoulds Antwort verwenden und das
ssh-add
Dienstprogramm macOS explizit verwenden.bash_profile
, um alle Schlüssel zum Schlüsselbund hinzuzufügen, dh:Wie oben in einem Kommentar erwähnt , müssen Sie möglicherweise zuerst einen Schlüssel zum Schlüsselbund hinzufügen: z
/usr/bin/ssh-add -K .ssh/github
quelle
Die Änderung von ~ / .ssh / config, um UseKeyChain für alle Hosts hinzuzufügen, reicht aus, um diesen wiederkehrenden Albtraum zu stoppen;)
Wenn die Datei leer ist oder nicht existiert, erstellen und / oder fügen Sie die obige Konfiguration hinzu.
quelle
Ich habe auf Mac OS X Sierra (10.12.6) aktualisiert. Ich könnte in andere Hosts ssh aber nicht in github.com.
Folgendes musste ich in ~ / .ssh / config einfügen:
Nach dieser Änderung konnte ich Github wie zuvor verwenden.
quelle