Speichern Sie die von ssh-add hinzugefügten Identitäten, damit sie bestehen bleiben

19

Ich habe vor kurzem eingerichtet, opensshdamit ich es mit verwenden kann git.

Während der Einrichtung (gemäß diesem Artikel ) habe ich die folgenden Befehle ausgeführt:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Einige Zeit später, nachdem ich mich abgemeldet und wieder angemeldet hatte, git pushbekam ich einen Fehler. Die Lösung für diesen Fehler bestand darin, dieselben Befehle erneut auszuführen.

Bitte sag mir, wie ich kann

  • Halten Sie das ssh-agentLaufen so dass ich nicht einen neuen starten muß
  • Denken Sie an die Schlüssel, die ich hinzugefügt habe, damit ich sie nicht jedes Mal hinzufügen muss

Zur Verdeutlichung verwende ich zsh, damit bestimmte Bash-Funktionen in meiner .zshrc nicht funktionieren.

Timotree
quelle
Sie sollten zunächst verstehen, wofür ssh-agentund wie es funktioniert, bevor Sie versuchen, es an Ihren verdrehten Anwendungsfall anzupassen.
Jakuje
Welchen Fehler hast du?
Jakuje
@Jakuje Der Fehler betraf einen fehlenden Pubkey und fragte "Haben Sie ssh-agent gestartet?".
Timotree

Antworten:

21

Wofür ssh-agentund wie funktioniert es?

Das ssh-agenthält Ihre entschlüsselten Schlüssel sicher im Speicher und in Ihrer Sitzung. Es gibt keine vernünftige und sichere Möglichkeit, die entschlüsselten Schlüssel bei Neustarts / Neuanmeldungen beizubehalten.

OK, wie kann ich das automatisieren?

ssh-agentStart automatisieren

Hinzufügen

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

zu Ihrem ~/.bashrcoder einem anderen Startskript ( ~/.zshrc).

Automatisieren Sie das Hinzufügen der Schlüssel

Die Schlüssel können beim ersten Gebrauch beim Hinzufügen automatisch hinzugefügt werden

AddKeysToAgent yes

zu deinem ~/.ssh/config.

Weitere Informationen finden ~/.ssh/configSie unter man ssh_config.

Jakuje
quelle
Sie sagen also, wenn ich AddKeysToAgent aktiviere, wird dann bei jeder Eingabe eval "$(ssh-agent -s)"mein Schlüssel hinzugefügt?
Timotree
Wenn der Agent ausgeführt wird und Sie sshdiese Option unterstützen, dann ja.
Jakuje
Können Sie bitte klarstellen, wie ich das Starten des ssh-agentdann automatisieren würde ?
Timotree
Grundsätzlich wie in der anderen Antwort erklärt. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje
Funktioniert das mit zsh?
Timotree
3

Fügen Sie dies hinzu ~/.bashrc

Dies bedeutet, dass ssh-agent automatisch gestartet wird, wenn Sie eine andere Sitzung ohne Ihr Terminal öffnen

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

Wenn Sie dem Agenten einen Schlüssel hinzufügen möchten, fügen Sie diesen ebenfalls hinzu

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi
Savitoj Singh
quelle
1
Dies war eine gute Antwort, erklärt aber nicht, was der Befehl tut.
Timotree