SSH Agent

Aus xinux.net
Zur Navigation springen Zur Suche springen
  • Für zusätzliche Sicherheit ist es üblich, den privaten Schlüssel in verschlüsselter Form zu speichern,
  • Zum Entschlüsseln wird eine Passphrase genutzt.
  • Da die Eingabe der Passphrase mühsam sein kann, möchten viele Benutzer sie nur einmal pro lokaler Anmeldesitzung eingeben.
  • Der sicherste Ort zum Speichern des unverschlüsselten Schlüssels ist der Programmspeicher
  • In Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden.
  • Die SSH-Client-Prozesse dauern nur so lange wie die Remote-Anmeldesitzung.
  • Daher führen Benutzer ein Programm namens ssh-agent aus, das über die Dauer einer lokalen Anmeldesitzung hinaus läuft.
  • Dieses speichert unverschlüsselte Schlüssel im Speicher und kommuniziert mit SSH-Clients über einen Unix-Domain-Socket.
  • ssh-agent erstellt einen Socket und überprüft dann die Verbindungen von SSH.
  • Wenn der Agent startet, erstellt er ein neues Verzeichnis in /tmp mit restriktiven Berechtigungen.
  • Der Socket befindet sich in diesem Verzeichnis.

Einrichten

  • Damit der SSH Agent beim Anmelden des Benutzers automatisch startet, wird die folgende systemd-Servicedatei angelegt
  • vim ~/.config/systemd/user/ssh-agent.service
[Unit]
Description=SSH key agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
Environment=DISPLAY=:0
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target
  • systemctl --user enable --now ssh-agent.service
  • Dann muss man SSH sagen, dass die Schlüssel zum Agent hinzugefügt werden sollen
  • vim ~/.ssh/config
AddKeysToAgent yes
  • Als letztes muss man die Umgebungsvariable des Sockets vom SSH-Agent setzen, damit SSH auch mit dem Agent kommunizieren kann
  • export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket
  • Diesen Befehl kann man entweder in .bash_profile, .zprofile, .xinitrc oder .xprofile setzten, je nachdem was die Desktopumgebung verwendet

Wenn kein grafisches System vorhanden

Wenn kein grafisches System vorhanden