Der SSH-Agent verliert seine Identität beim Neustart des Computers

Der SSH-Agent verliert seine Identität beim Neustart des Computers

Nachdem ich Schlüssel mit Namen id_rsaam Standardspeicherort erstellt habe, füge ich mit dem Befehl eine Identität zum SSH-Agenten hinzu. ssh-add ~/.ssh/id_rsaDas 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 -Lerhalte 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_sshist 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_rsabeim 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.

verwandte Informationen