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:
ssh-add -A
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:
nano ~/.bash_profile
Und füge diese Zeile unten hinzu:
ssh-add -A 2>/dev/null;
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 verwendeten id_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:
ssh-add -D
Danach starten Sie den SSH-Agenten wie folgt als Hintergrundprozess:
eval "$(ssh-agent -s)"
Jetzt wird es komisch und ich bin mir nicht sicher warum. In einigen Fällen können Sie ~/.ssh/id_rsa.pub
dem Agenten den Schlüssel / die Identität wie folgt hinzufügen :
ssh-add ~/.ssh/id_rsa.pub
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:
ssh-add -K
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
:
nano ~/.bash_profile
Und füge diese Zeile unten hinzu; kommentiere oder entferne die -A
Version, wenn du das hast:
ssh-add -K 2>/dev/null;
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 auch ssh-add -A
eine Lösung in Betracht .
Seit macOS Sierra 10.12.2 hat Apple (ich nehme an) eine UseKeychain
Konfigurationsoption für SSH-Konfigurationen hinzugefügt. Das Überprüfen der Manpage (via man ssh_config
) zeigt die folgenden Informationen:
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular 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''.
Was darauf hinausläuft, dass Apple die Lösung entweder wie in diesem Open Radar-Ticket erläutertssh-add -A
zu Ihrer hinzufügt oder als eine der Optionen in einem pro Benutzer hinzufügt ..bash_profile
UseKeychain
~/.ssh/config