SSH-Schlüssel SSH-Agent Bash und SSH-Add

28

Ich bin neu in SSH-Schlüssel. Kann mir jemand erklären, wie das ssh-agent bashund ssh-addfunktioniert?

Ich muss seine Interna in Zukunft verstehen.

maneeshshetty
quelle
Haben Sie den Top-Google-Hit für einen dieser Begriffe ausprobiert?
Daniel Beck
Ja, habe ich. Ich habe keine nützlichen Informationen erhalten. Mein schlechtes
maneeshshetty

Antworten:

44

Ein Agent ist ein Programm, das Ihre Schlüssel im Speicher hält, sodass Sie sie nicht jedes Mal, sondern nur einmal entsperren müssen . ssh-agent erledigt dies für SSH-Schlüssel.

Die üblichen Methoden zum Starten von ssh-agent sind:

  • eval `ssh-agent`- Dadurch wird der Agent im Hintergrund ausgeführt und die entsprechenden Umgebungsvariablen für die aktuelle Shell-Instanz festgelegt.

    ( Wenn ssh-agent ohne Argumente gestartet wird, werden Befehle ausgegeben, die von Ihrer Shell interpretiert werden sollen.)

  • exec ssh-agent bash- Startet eine neue Instanz der bashShell und ersetzt die aktuelle.

    (Mit einem oder mehreren Argumenten gibt ssh-agent nichts aus, sondern startet den angegebenen Befehl: in diesem Fall die bashShell, aber technisch könnte es alles sein.)

    Die zweite Methode wird manchmal bevorzugt, da ssh-agent automatisch beendet wird, wenn Sie das Terminalfenster schließen. (Wenn evalder Agent mit gestartet wird, wird er weiterhin ausgeführt, ist jedoch nicht verfügbar.)

Dies startet jedoch nur einen leeren Agenten. Um es wirklich nützlich zu machen, müssen Sie ssh-add verwenden , mit dem Ihre Schlüssel (normalerweise ~/.ssh/id_*) entsperrt und in den Agenten geladen werden , sodass sie für ssh- oder sftp- Verbindungen zugänglich sind .

Grawity
quelle
3
Gibt es eine Möglichkeit, ssh-agent über mehrere Bash-Sitzungen hinweg einmal zu starten?
Asim
9

Darüber hinaus möchten Sie möglicherweise einige Schlüssel beim Sitzungsstart hinzufügen.

Bearbeiten Sie Ihre ~/.bashrcDatei und fügen Sie Folgendes hinzu:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Überprüfen Sie Ihre Schlüssel mit ssh-add -l

Sie können die aktuelle ssh-agent-Sitzung mit beenden ssh-agent -k

Was Sie über ssh-agent und .bashrc wissen sollten, ist, dass Sie nicht zu viele Schlüssel laden. Die Standardanzahl der Versuche für den ssh-Daemon ist auf 6 begrenzt. Dies kann /etc/ssh/sshd_configmit dem MaxAuthTriesWert geändert werden.

user1293603
quelle
1
Was ist mit dem Passwort für den privaten Schlüssel beim Starten ssh-addmit "&"? Gehen Sie davon aus, dass die privaten Schlüsseldateien ungeschützt sind?
Luciano
Der obige Code fragt zweimal nach der Passphrase, einmal, wenn geprüft wird, ob ssh-agent verfügbar ist, und einmal, wenn der private Schlüssel geladen wird.
Tapan Chandra