Nachdem ich Schlüssel mit Namen id_rsa
am Standardspeicherort erstellt habe, füge ich mit dem Befehl eine Identität zum SSH-Agenten hinzu. ssh-add ~/.ssh/id_rsa
Das Hinzufügen ist erfolgreich.
Ich kann SSH verwenden, ohne die Passphrase des Schlüssels eingeben zu müssen, da dieser bereits beim SSH-Agenten vorhanden ist.
Aber, wenn ich die Maschine oder den Server neu starte und dann mit einem Befehl die Identität überprüfe, ssh-add -L
erhalte ich eine Meldung wie diese The agent has no identities
.
Bedeutet das, dass der Agent seine Identität verliert, wenn wir den Computer neu starten? Ist das normales Verhalten oder übersehe ich hier etwas?
Bitte helfen Sie mir, ich kenne mich mit SSH nicht so gut aus.
Antwort1
Das ist normal. Der Zweck eines Schlüsselagenten besteht lediglich darin, entschlüsselte Schlüssel aufzubewahrenin Erinnerung, aber es wird sie nie auf die Festplatte schreiben. (Das würde den Zweck verfehlen – warum nicht stattdessen einfach den Schutz des Hauptschlüssels aufheben?)
Daher müssen die Schlüssel bei jedem Login entsperrt werden, und Sie müssen dies automatisieren – unter Linux pam_ssh
ist die Verwendung von eine Option; es wird automatischverwendet Ihr Betriebssystemkennwortum den Agenten zu entsperren. Ein anderes ähnliches Modul ist pam_envoy
, das meines Wissens nach etwas zuverlässiger ist (erfordert aber systemd).
Beide Module starten den Agenten selbst und laden die Schlüssel automatisch.
Antwort2
Unter OS X verfügt ssh-add über ein spezielles Flag für die Verbindung mit Keychain, wenn Sie Ihren privaten Schlüssel dort speichern möchten.
Lauf einfach ssh-add -K ~/.ssh/id_rsa
.
Ich glaube, das beantwortet Ihre Frage ausführlicher. Es ist schwierig, Dokumentation für dieses OS X-spezifische Flag zu finden, aber es funktioniert zumindest seit OS X Leopard.
Antwort3
Versuchen Sie dies zu Ihrem~/.bashrc:
if [ ! -S ~/.ssh/id_rsa ]; then
eval `ssh-agent`
ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa
Die Kennwortabfrage sollte nur erfolgen, wenn Sie sich anmelden.
Antwort4
Es muss nach jedem Neustart entsperrt werden, um in den Speicher geladen zu werden. Fügen Sie dazu Folgendes zu Ihrem hinzu ~/.bashrc
:
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
Geben Sie einem Schlüsselpaar id_rsa
beim Erstellen keinen Namen. Geben Sie den Schlüsseln einen aussagekräftigen Namen, der sich auf die Ressource bezieht, auf die Sie zugreifen möchten. Der Name kann beliebig sein, der Standardname ist nichts Besonderes id_rsa
.