Es scheint, dass ssh-add -K ~/.ssh/id_rsa
das Ihren Schlüssel lädt, aber bei jedem Neustart nach dem Passwort fragt.
Ich suche nach einer Lösung, bei der ich das Schlüsselkennwort zwischen den Anmeldungen nicht erneut eingeben muss.
Es ist nicht möglich, einen privaten Schlüssel zum Schlüsselbund hinzuzufügen, aber Sie können die Passphrase für den privaten Schlüssel im Schlüsselbund speichern. Unter OSX hat der native ssh-add
Befehl ein spezielles Argument, um die Passphrase des privaten Schlüssels im OSX-Schlüsselbund zu speichern, was bedeutet, dass Ihre normale Anmeldung ihn für die Verwendung mit ssh entsperrt. Unter OSX Sierra und höher müssen Sie SSH auch so konfigurieren, dass immer der Schlüsselbund verwendet wird (siehe Schritt 2 unten).
Alternativ können Sie einen Schlüssel ohne Passphrase verwenden, aber wenn Sie die Sicherheit bevorzugen, ist dies bei diesem Workflow sicherlich akzeptabel.
In der neuesten Version von MacOS (12.0 Monterey) tun Sie dies nur einmal:
ssh-add --apple-use-keychain ~/.ssh/[your-private-key]
Oder verwenden Sie in Versionen von MacOS älter als 12.0 Monterey:
ssh-add -K ~/.ssh/[your-private-key]
Geben Sie Ihre Schlüssel-Passphrase ein und Sie werden nicht noch einmal danach gefragt.
(Wenn dies fehlschlägt, stellen Sie sicher, dass Sie die Apple-Version von verwenden /usr/bin/ssh-add
und nicht etwas, das mit brew usw. installiert wurde; überprüfen Sie mit which ssh-add
)
(Hinweis: In Versionen von OSX vor Sierra ist dies nicht erforderlich)
Es scheint, dass OSX Sierra das bequeme Verhalten entfernt hat, Ihre Schlüssel zwischen den Anmeldungen beizubehalten, und das Update auf ssh verwendet standardmäßig nicht mehr den Schlüsselbund. Aus diesem Grund müssen Sie eine weitere Sache für die sichere dauerhafte Schlüsselspeicherung ändern.
Die Lösung wird in diesem Github-Thread-Kommentar skizziert . Folgendes tun Sie:
Stellen Sie sicher, dass Sie Schritt 1 oben abgeschlossen haben, um die Passphrase im Schlüsselbund zu speichern.
Falls noch nicht geschehen, erstellen Sie eine ~/.ssh/config
Datei. Mit anderen Worten, erstellen Sie im .ssh
Verzeichnis Ihres Home-Verzeichnisses eine Datei namens config
.
Fügen Sie in dieser .ssh/config
Datei die folgenden Zeilen hinzu:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Wechseln ~/.ssh/id_rsa
Sie zum tatsächlichen Dateinamen Ihres privaten Schlüssels. Wenn Sie andere private Schlüssel in Ihrem ~/.ssh
Verzeichnis haben, fügen Sie auch IdentityFile
für jeden davon eine Zeile hinzu. Zum Beispiel habe ich eine zusätzliche Zeile, die IdentityFile ~/.ssh/id_ed25519
für einen 2. privaten Schlüssel liest.
Das UseKeychain yes
ist der Schlüsselteil, der SSH anweist, in Ihrem OSX-Schlüsselbund nach der Schlüssel-Passphrase zu suchen.
Das ist es! Wenn Sie das nächste Mal eine SSH-Verbindung laden, versucht es die von Ihnen angegebenen privaten Schlüssel und sucht nach deren Passphrase im OSX-Schlüsselbund. Keine Passphrase-Eingabe erforderlich.
ssh-add -K ...
fügte dem ssh-Agenten die Schlüssel hinzu, ohne nach einem Passwort zu fragen, aber nur für die aktuelle Sitzung. Nach einem Neustart musste ich den Befehl erneut ausgeben.ssh-add -A
manuell ausführen, um Ihren gespeicherten Schlüsselbund zu laden. Einige mögliche Lösungen, auf die oben verwiesen wird..ssh/config
Datei sieht vielversprechend aus! Siehe github.com/lionheart/openradar-mirror/issues/…ssh-add
Bash-Anmeldung auszuführen, zumal nicht jeder die Bash-Shell verwendet. Bitte aktualisieren Sie die Antwort, sobald Sie die Bestätigung haben, dass es funktioniert.A
Flag zusätzlich zu dem verwenden K
, um meine Schlüssel zum Schlüsselbund hinzuzufügen und die Passphrase darin zu registrieren ( ssh-add -AK ~/.ssh/[your-private-key]
). Danke!Bad configuration option: usekeychain
.IgnoreUnknown UseKeychain
für Cross-Kompatibilität.ssh-add
; Wenn Sie Homebrew oder ein anderes SSH installiert haben, wird es möglicherweise überschrieben. Verwenden Sie which ssh-add
, um herauszufinden, welches; die Apple-Version ist unter /usr/bin/ssh-add
. Stellen Sie sicher , dass /usr/bin
Ihr $PATH Priorität hat, wenn dies der Fall ist.ssh-add -K
Option ist immer noch vorhanden und funktioniert einwandfrei. Überprüfen Sie, ob Sie das Recht verwenden ssh-add
oder ob es andere Unterschiede in Ihrer Umgebung gibt.IdentityFile
ist nicht unbedingt erforderlich, wenn die Standardschlüsselnamen verwendet werden.-AK
Flags verwenden, da in OS Catalina 10.15.6 nur -k
ein Flag verwendet wird, um jeweils nur einen Schlüssel zu speichern, egal wie oft ich ihn hinzugefügt habe, nur einer wurde gespeichert, wenn ich sie mit konsultierte ssh-add -l
./usr/bin/ssh-add -K
!-K
scheint es durch ersetzt worden zu sein --apple-use-keychain
.--apple-load-keychain
und --apple-use-keychain
, und ein großes WARNING
wird gedruckt, wenn Sie versuchen, die alten Namen zu verwenden. Dies liegt daran, dass Upstream-SSH -K
als neue Option hinzugefügt wurde, um „residente Schlüssel von einem FIDO-Authentifikator zu laden“.Ich hatte ein ähnliches Problem, da ich jedes Mal nach meiner Pub-Key-Passphrase gefragt wurde. Auf Vorschlag des Benutzers "trisweb" oben habe ich diese Optionen aktiviert auf ~/.ssh/config
:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Aber es wurde immer noch jedes Mal aufgefordert, wenn ich ssh verwenden wollte. Schließlich schaltete ich ein ssh -v
und fand diese Debug-Zeile:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Ich habe dann meinen Schlüsselbund in "Keychain Access.app" geöffnet, den Schlüssel mit dem Namen "SSH: /Users/username/.ssh/id_rsa" gefunden und ihn geöffnet. Ich habe auf „Passwort anzeigen“ geklickt, um das Passwort offenzulegen, und tatsächlich festgestellt, dass die Passphrase im Schlüsselbund eine alte Passphrase war. Ich habe die Passphrase in der Schlüsselbundverwaltung aktualisiert, und jetzt funktioniert die Passwortfreiheit.
Ich hätte die Passphrase auch mit diesem Satz aktualisieren können:
ssh-keygen -p -f ~/.ssh/id_rsa
Für alle, bei denen das oben Genannte nicht funktioniert hat, scheint mein Problem darauf zurückzuführen zu sein, dass ich das UseKeychain yes
& AddKeysToAgent yes
in allen ssh-Schlüsselprofilen / -Verknüpfungen dupliziert habe. Ich habe meine ~/.ssh/config
Datei aktualisiert, um diese nur einmal zu deklarieren, und sie werden jetzt alle beim Anmelden geladen, ohne beim Start nach Passwörtern zu fragen, z.
Host foo
HostName foo.com
User fooUser
IdentityFile ~/.ssh/foo
Host bar
HostName bar.com
User barUser
IdentityFile ~/.ssh/bar
########################
# Keep the default configuration
# as the last item in this file
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/foo
IdentityFile ~/.ssh/bar
Host *
, nach bestimmten Host-Regeln zu sein. Siehe man ssh_config
für Details.IdentityFile ~/.ssh/foo
wurde immer verwendet. Um das Problem zu beheben, musste ich den Abschnitt Host * nach unten verschieben, wie @FranklinYu vorschlägt. Ich denke, das liegt daran, dass > für jeden Parameter der erste erhaltene Wert verwendet wird. linux.die.net/man/5/ssh_configAußerdem wird in macOS Sierra und High Sierra (ich weiß nichts über frühere Versionen) ssh-add -A
der Agent ausgeführt, um alle Schlüssel zu laden, deren Passphrasen auf dem Schlüsselbund gespeichert sind ... Also sehr praktisch
Beachten Sie, dass diese Optionsflags umbenannt wurden und die alten in späteren Versionen von macOS veraltet sind. Aus der ssh
Manpage:
APPLE_SSH_ADD_BEHAVIOR
Aktiviert oder deaktiviert die ältere Verarbeitung der-A
und -Optionen-K
, die in früheren macOS-Versionen verwendet wurden. Diese Optionen wurden umbenannt--apple-load-keychain
bzw. Verhalten sich jedoch und immer noch wie in früheren Versionen, außer unter den folgenden Umständen :--apple-use-keychain
-A
-K
- Wenn ein Sicherheitsanbieter mit
-S
oder SSH_SK_PROVIDER angegeben wurde oder wenn APPLE_SSH_ADD_BEHAVIOR auf den Wert „openssh“ gesetzt ist, wirdssh-add
das standardmäßige OpenSSH-Verhalten verwendet: Das-A
Flag wird nicht erkannt und das-K
Flag verhält sich wie im Abschnitt „BESCHREIBUNG“ oben dokumentiert.- Ansonsten verhält sich
ssh-add -A
und-K
wie in früheren macOS-Versionen. Es wird eine Warnung zum Standardfehler ausgegeben, es sei denn, APPLE_SSH_ADD_BEHAVIOR ist auf den Wert „macos“ gesetzt. Hinweis: Zukünftige Versionen von macOS werden weder-A
noch-K
ohne das Setzen dieser Umgebungsvariable unterstützen.
Genau das können Sie jetzt mit der Flagge --apple-use-keychain
erreichen.
ssh-add --apple-use-keychain ~/.ssh/id_rsa
Fügen Sie dies zu Ihrer .zshrc
oder .bashrc
-Datei hinzu, damit es bei neuen Anmeldungen / Terminalinstanzen aus Ihrem Schlüsselbund geladen wird.
Dies ersetzt die Flags -K
und :-A
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
ssh-add --apple-load-keychain -q
zu meiner .zshrc
Akte hinzufügen.Eine der Lösungen besteht darin, .ssh aus dem Pfad zu löschen. So - "ssh-add --apple-use-keychain ~/id_ed25519" oder "ssh-add --apple-use-keychain ~/[IHRE ID VON SSH]"
Außerdem müssen Sie den Pfad in ~/.ssh/config ändern, indem Sie /.ssh löschen
Fügen Sie den öffentlichen Schlüssel hinzu in:
.ssh/known_hosts
Öffentliche Schlüssel sind normalerweise auf:
/home/user/.ssh/id_rsa.pub
Ich hoffe, das hilft
authorized_keys
Michael h.
sorin
id_rsa
Schlüssel ist ein Passwort.Harald Hanche-Olsen
ssh-add
, sondern einfachssh
direkt zu laufen. Sie sollten ein Fenster öffnen, das als Passphrase für den Schlüssel dient, und mit einem Kontrollkästchen, mit dem Sie ihn in Ihrem Schlüsselbund speichern können.Michael h.
Mathew Halle
E1Süffig
Toni Firnandes
Toni Firnandes
Oligofren