645 Stimmen

Wie kann man einen privaten Schlüssel mit ssh-add unter Ubuntu dauerhaft hinzufügen?

Ich habe einen mit einem Kennwort geschützten privaten Schlüssel für den Zugriff auf einen Server über SSH.

Ich habe 2 Linux-Rechner (Ubuntu 10.04) und das Verhalten des Befehls ssh-add ist bei beiden unterschiedlich.

Auf einem Rechner wurde der Schlüssel nach der Verwendung von "ssh-add .ssh/identity" und der Eingabe meines Kennworts dauerhaft hinzugefügt, d. h. jedes Mal, wenn ich den Computer herunterfahre und mich erneut anmelde, ist der Schlüssel bereits hinzugefügt.

Bei der anderen muss ich den Schlüssel jedes Mal hinzufügen, wenn ich mich anmelde.

Soweit ich mich erinnere, habe ich bei beiden das Gleiche getan. Der einzige Unterschied besteht darin, dass der Schlüssel auf der Seite erstellt wurde, die dauerhaft hinzugefügt wird.

Weiß jemand, wie man sie auch auf dem anderen Gerät dauerhaft hinzufügen kann?

1 Stimmen

Der Agent sollte nur temporär sein; aber es ist möglich, dass Sie den Befehl ssh-add irgendwo in ~/.bashrc oder so auf einem der beiden Rechner haben

0 Stimmen

Dieser Befehl hat bei mir funktioniert ssh-add --apple-use-keychain ~/.ssh/id_rsa

20voto

Ich habe die Lösung von @Aaron ausprobiert, aber sie hat bei mir nicht ganz funktioniert, weil meine Schlüssel jedes Mal neu hinzugefügt wurden, wenn ich eine neue Registerkarte in meinem Terminal geöffnet habe. Also habe ich es ein wenig geändert (beachten Sie, dass die meisten meiner Schlüssel auch passwortgeschützt sind, so dass ich die Ausgabe nicht einfach an /dev/null senden kann):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

Dies bedeutet, dass es die Ausgabe von ssh-add -l (die alle hinzugefügten Schlüssel auflistet) nach einem bestimmten Schlüssel, und wenn er ihn nicht findet, fügt er ihn mit ssh-add .

Wenn ich nun mein Terminal zum ersten Mal öffne, werde ich nach den Passwörtern für meine privaten Schlüssel gefragt, und ich werde erst wieder gefragt, wenn ich meinen Computer neu starte (oder mich abmelde - ich habe es nicht überprüft).

Da ich eine Reihe von Schlüsseln habe, speichere ich die Ausgabe von ssh-add -l in einer Variablen, um die Leistung zu verbessern (zumindest nehme ich an, dass es die Leistung verbessert :) )

PS: Ich bin auf Linux und dieser Code ging an meine ~/.bashrc Datei - wenn Sie mit Mac OS X arbeiten, sollten Sie sie zu .zshrc または .profile

EDIT: Wie von @Aaron in den Kommentaren angemerkt, ist die .zshrc Datei wird aus der zsh Shell - wenn Sie das also nicht benutzen (wenn Sie sich nicht sicher sind, dann benutzen Sie höchstwahrscheinlich bash stattdessen), sollte dieser Code in Ihre .bashrc Datei.

15voto

erezmta Punkte 157

In meinem Fall war die Lösung:

Die Berechtigungen für die Konfigurationsdatei sollten 600 sein. chmod 600 config

Wie in den obigen Kommentaren von generalopinion

Der Inhalt der Konfigurationsdatei muss nicht verändert werden.

6voto

Fholst Punkte 174

Ich verwende Ubuntu mit zwei id_rsa-Schlüsseln. (einen persönlichen und einen für die Arbeit). ssh-add merkt sich einen Schlüssel (den persönlichen) und vergisst den Firmenschlüssel jedes Mal.

Als ich den Unterschied zwischen den beiden Schlüsseln überprüfte, sah ich, dass mein persönlicher Schlüssel 400 Rechte hatte, während der Firmenschlüssel 600 Rechte hatte. (hatte u+w). Das Entfernen des Benutzer-Schreibrechts vom Firmenschlüssel (u-w oder auf 400 gesetzt) hat mein Problem behoben. ssh-add merkt sich jetzt beide Schlüssel.

4voto

Robert Siemer Punkte 28819

Unter Ubuntu 14.04 (vielleicht früher, vielleicht immer noch) brauchen Sie nicht einmal die Konsole:

  • Start seahorse oder starten Sie das Ding, das Sie bei der Suche nach "Schlüssel" finden
  • dort einen SSH-Schlüssel erstellen (oder einen importieren)
    • keine Notwendigkeit, die Passphrase leer zu lassen
    • es wird Ihnen sogar angeboten, den öffentlichen Schlüssel auf einen Server (oder mehrere) zu übertragen
  • wird ein ssh-Agent ausgeführt und dieser Schlüssel geladen, aber gesperrt
  • mit ssh holt die Identität (d.h. den Schlüssel) über den Agenten
  • bei der ersten Verwendung während der Sitzung wird die Passphrase überprüft
    • und Sie haben die Möglichkeit, den Schlüssel bei der Anmeldung automatisch zu entsperren
    • das bedeutet, dass die Passphrase des Schlüssels mit dem Login-Auth umhüllt wird
  • Hinweis: Wenn Sie Ihre Identität weiterleiten wollen (d.h. Agent-Forwarding), rufen Sie Ihre ssh mit -A oder dies als Standard festlegen
    • sonst können Sie sich nicht mit diesem Schlüssel authentifizieren auf einem Rechner, auf dem Sie sich später anmelden, auf einem dritten Rechner

4voto

reynoldpj Punkte 69

Das Hinzufügen der folgenden Zeilen in "~/.bashrc" hat das Problem für mich gelöst. Ich verwende Ubuntu 14.04 Desktop.

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X