SSH Agent: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | + | [[Kategorie:SSH]] | |
| − | |||
*Für zusätzliche Sicherheit ist es üblich, den privaten Schlüssel in verschlüsselter Form zu speichern, | *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. | *Zum Entschlüsseln wird eine Passphrase genutzt. | ||
| Zeile 7: | Zeile 6: | ||
*In Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden. | *In Unix-ähnlichen Betriebssystemen ist der Speicher normalerweise mit einem Prozess verbunden. | ||
*Die SSH-Client-Prozesse dauern nur so lange wie die Remote-Anmeldesitzung. | *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 | + | *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. | *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-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. | *Wenn der Agent startet, erstellt er ein neues Verzeichnis in /tmp mit restriktiven Berechtigungen. | ||
*Der Socket befindet sich in diesem Verzeichnis. | *Der Socket befindet sich in diesem Verzeichnis. | ||
| − | * | + | {{#drawio:ssh-agent1-1}} |
| − | * | + | |
| − | * | + | = 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'' setzen, je nachdem was die Desktopumgebung verwendet | ||
| + | |||
| + | =Wenn kein grafisches System vorhanden ist= | ||
| + | *[[Ssh agent start]] | ||
Aktuelle Version vom 18. August 2024, 15:46 Uhr
- 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 setzen, je nachdem was die Desktopumgebung verwendet
