SSH Server: Unterschied zwischen den Versionen
| Zeile 84: | Zeile 84: | ||
| <code>ssh_host_*_key.pub</code> || Öffentliche Host Keys (werden dem Client beim Verbindungsaufbau gezeigt) | | <code>ssh_host_*_key.pub</code> || Öffentliche Host Keys (werden dem Client beim Verbindungsaufbau gezeigt) | ||
|} | |} | ||
| + | |||
| + | = Die Hauptkonfigurationsdatei = | ||
| + | |||
| + | Die Hauptkonfigurationsdatei des SSH-Servers ist <code>/etc/ssh/sshd_config</code>. | ||
| + | Sie enthält viele auskommentierte Standardwerte. Um einen besseren Überblick zu bekommen, | ||
| + | empfiehlt es sich, zuerst ein Backup anzulegen und dann eine bereinigte Version zu erstellen. | ||
| + | |||
| + | Backup der Originaldatei anlegen: | ||
| + | '''cp sshd_config sshd_config.org''' | ||
| + | |||
| + | Nur aktive (nicht auskommentierte) Zeilen in die Konfigurationsdatei schreiben: | ||
| + | '''grep "^[^#]" sshd_config.org > sshd_config''' | ||
| + | |||
| + | Ergebnis anzeigen: | ||
| + | '''cat sshd_config''' | ||
| + | |||
| + | Die Standardkonfiguration unter Debian/Ubuntu enthält dann folgende aktive Einstellungen: | ||
| + | Include /etc/ssh/sshd_config.d/*.conf | ||
| + | KbdInteractiveAuthentication no | ||
| + | UsePAM yes | ||
| + | X11Forwarding yes | ||
| + | PrintMotd no | ||
| + | AcceptEnv LANG LC_* COLORTERM NO_COLOR | ||
| + | Subsystem sftp /usr/lib/openssh/sftp-server | ||
| + | |||
| + | == Erklärung der Standardeinstellungen == | ||
| + | |||
| + | === Include /etc/ssh/sshd_config.d/*.conf === | ||
| + | |||
| + | Bindet alle <code>.conf</code>-Dateien aus dem Verzeichnis <code>/etc/ssh/sshd_config.d/</code> ein. | ||
| + | Das ermöglicht es, die Konfiguration modular aufzuteilen – statt alles in eine große Datei zu schreiben, | ||
| + | kann man z. B. eine eigene Datei für Authentifizierungsregeln anlegen. | ||
| + | |||
| + | '''Hinweis:''' Einstellungen in diesen Drop-in-Dateien überschreiben die Werte aus <code>sshd_config</code>, | ||
| + | wenn sie weiter oben in der Datei stehen. <code>Include</code> steht deshalb ganz am Anfang. | ||
| + | |||
| + | === KbdInteractiveAuthentication no === | ||
| + | |||
| + | Deaktiviert die tastaturbasierte interaktive Authentifizierung (früher <code>ChallengeResponseAuthentication</code>). | ||
| + | Das betrifft z. B. Einmalpasswörter (OTP) oder PAM-Abfragen die eine Benutzerinteraktion erfordern. | ||
| + | |||
| + | Auf den meisten Servern wird dies deaktiviert, da die Authentifizierung über Public Key oder Passwort ausreicht. | ||
| + | |||
| + | === UsePAM yes === | ||
| + | |||
| + | Aktiviert die Nutzung von '''PAM''' (Pluggable Authentication Modules) – dem zentralen Authentifizierungssystem | ||
| + | unter Linux. PAM übernimmt z. B. die Passwortprüfung, Sitzungsverwaltung und Zugriffskontrolle. | ||
| + | |||
| + | '''Hinweis:''' Auch wenn Passwort-Login in der SSH-Konfiguration deaktiviert ist, bleibt PAM aktiv – | ||
| + | es übernimmt dann andere Aufgaben wie das Einrichten der Benutzer-Session. | ||
| + | |||
| + | === X11Forwarding yes === | ||
| + | |||
| + | Erlaubt die Weiterleitung von grafischen Anwendungen über SSH. Damit kann man ein GUI-Programm | ||
| + | auf dem Server starten und es erscheint auf dem eigenen Bildschirm. | ||
| + | |||
| + | Beispiel: | ||
| + | ssh -X user@server | ||
| + | gedit # öffnet den Texteditor grafisch auf dem eigenen Rechner | ||
| + | |||
| + | '''Hinweis:''' Wird auf reinen Produktionsservern oft deaktiviert, da es ein potenzielles Sicherheitsrisiko | ||
| + | darstellt und auf Servern ohne GUI ohnehin selten gebraucht wird: | ||
| + | X11Forwarding no | ||
| + | |||
| + | === PrintMotd no === | ||
| + | |||
| + | Deaktiviert die Ausgabe der '''Message of the Day''' (<code>/etc/motd</code>) beim SSH-Login durch den SSH-Daemon. | ||
| + | |||
| + | Die Ausgabe wird stattdessen von PAM übernommen (sofern <code>UsePAM yes</code> gesetzt ist), | ||
| + | um doppelte Ausgaben zu vermeiden. | ||
| + | |||
| + | === AcceptEnv LANG LC_* COLORTERM NO_COLOR === | ||
| + | |||
| + | Erlaubt dem Client, bestimmte Umgebungsvariablen an den Server zu übertragen: | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Variable !! Bedeutung | ||
| + | |- | ||
| + | | <code>LANG</code> || Standardsprache / Zeichenkodierung (z. B. <code>de_DE.UTF-8</code>) | ||
| + | |- | ||
| + | | <code>LC_*</code | ||
| + | |||
| + | |||
== Siehe auch == | == Siehe auch == | ||
Version vom 11. April 2026, 14:48 Uhr
SSH-Server
Der SSH-Server ermöglicht es, eingehende SSH-Verbindungen entgegenzunehmen. Unter Debian/Ubuntu läuft er als Systemdienst und wird über systemctl verwaltet.
Pakete
- SSH besteht aus dem Metapaket
ssh
- Dieses beinhaltet die Pakete
openssh-client– der SSH-Client (für ausgehende Verbindungen)openssh-server– der SSH-Daemon (für eingehende Verbindungen)openssh-sftp-server– SFTP-Subsystem für Dateiübertragungen
Installation:
apt install ssh
Dienstverwaltung
Der SSH-Server läuft als Systemdienst und wird über systemctl verwaltet.
Für Logs wird journalctl verwendet.
Starten / Stoppen
Dienst starten
systemctl start ssh
Dienst stoppen
systemctl stop ssh
Dienst neu starten (z. B. nach Konfigurationsänderung)
systemctl restart ssh
Autostart beim Systemstart
SSH automatisch beim Booten starten
systemctl enable ssh
Autostart deaktivieren
systemctl disable ssh
Status prüfen
systemctl status ssh
Zeigt ob der Dienst läuft, seit wann, die PID und die letzten Logzeilen.
Logs verfolgen
journalctl -fu ssh
-f– folgt dem Log in Echtzeit (wietail -f)-u ssh– filtert nur auf den SSH-Dienst
Nützlich zum Debuggen von fehlgeschlagenen Verbindungsversuchen oder Konfigurationsfehlern.
Nur die letzten 50 Zeilen anzeigen:
journalctl -u ssh -n 50
Logs eines bestimmten Zeitraums:
journalctl -u ssh --since "2025-04-01 00:00" --until "2025-04-01 23:59"
Konfigurationsverzeichnis
ls /etc/ssh
moduli sshd_config.d ssh_host_ed25519_key.pub ssh_config ssh_host_ecdsa_key ssh_host_rsa_key ssh_config.d ssh_host_ecdsa_key.pub ssh_host_rsa_key.pub sshd_config ssh_host_ed25519_key
| Datei/Verzeichnis | Bedeutung |
|---|---|
sshd_config |
Hauptkonfiguration des SSH-Servers |
sshd_config.d/ |
Optionale Drop-in-Konfigurationen (werden von sshd_config eingelesen) |
ssh_config |
Systemweite Client-Konfiguration (gilt für alle Nutzer) |
ssh_config.d/ |
Drop-ins für die systemweite Client-Konfiguration |
moduli |
Parameter für den Diffie-Hellman-Schlüsselaustausch |
ssh_host_*_key |
Private Host Keys des Servers (niemals weitergeben) |
ssh_host_*_key.pub |
Öffentliche Host Keys (werden dem Client beim Verbindungsaufbau gezeigt) |
Die Hauptkonfigurationsdatei
Die Hauptkonfigurationsdatei des SSH-Servers ist /etc/ssh/sshd_config.
Sie enthält viele auskommentierte Standardwerte. Um einen besseren Überblick zu bekommen,
empfiehlt es sich, zuerst ein Backup anzulegen und dann eine bereinigte Version zu erstellen.
Backup der Originaldatei anlegen:
cp sshd_config sshd_config.org
Nur aktive (nicht auskommentierte) Zeilen in die Konfigurationsdatei schreiben:
grep "^[^#]" sshd_config.org > sshd_config
Ergebnis anzeigen:
cat sshd_config
Die Standardkonfiguration unter Debian/Ubuntu enthält dann folgende aktive Einstellungen:
Include /etc/ssh/sshd_config.d/*.conf KbdInteractiveAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* COLORTERM NO_COLOR Subsystem sftp /usr/lib/openssh/sftp-server
Erklärung der Standardeinstellungen
Include /etc/ssh/sshd_config.d/*.conf
Bindet alle .conf-Dateien aus dem Verzeichnis /etc/ssh/sshd_config.d/ ein.
Das ermöglicht es, die Konfiguration modular aufzuteilen – statt alles in eine große Datei zu schreiben,
kann man z. B. eine eigene Datei für Authentifizierungsregeln anlegen.
Hinweis: Einstellungen in diesen Drop-in-Dateien überschreiben die Werte aus sshd_config,
wenn sie weiter oben in der Datei stehen. Include steht deshalb ganz am Anfang.
KbdInteractiveAuthentication no
Deaktiviert die tastaturbasierte interaktive Authentifizierung (früher ChallengeResponseAuthentication).
Das betrifft z. B. Einmalpasswörter (OTP) oder PAM-Abfragen die eine Benutzerinteraktion erfordern.
Auf den meisten Servern wird dies deaktiviert, da die Authentifizierung über Public Key oder Passwort ausreicht.
UsePAM yes
Aktiviert die Nutzung von PAM (Pluggable Authentication Modules) – dem zentralen Authentifizierungssystem unter Linux. PAM übernimmt z. B. die Passwortprüfung, Sitzungsverwaltung und Zugriffskontrolle.
Hinweis: Auch wenn Passwort-Login in der SSH-Konfiguration deaktiviert ist, bleibt PAM aktiv – es übernimmt dann andere Aufgaben wie das Einrichten der Benutzer-Session.
X11Forwarding yes
Erlaubt die Weiterleitung von grafischen Anwendungen über SSH. Damit kann man ein GUI-Programm auf dem Server starten und es erscheint auf dem eigenen Bildschirm.
Beispiel:
ssh -X user@server gedit # öffnet den Texteditor grafisch auf dem eigenen Rechner
Hinweis: Wird auf reinen Produktionsservern oft deaktiviert, da es ein potenzielles Sicherheitsrisiko darstellt und auf Servern ohne GUI ohnehin selten gebraucht wird:
X11Forwarding no
PrintMotd no
Deaktiviert die Ausgabe der Message of the Day (/etc/motd) beim SSH-Login durch den SSH-Daemon.
Die Ausgabe wird stattdessen von PAM übernommen (sofern UsePAM yes gesetzt ist),
um doppelte Ausgaben zu vermeiden.
AcceptEnv LANG LC_* COLORTERM NO_COLOR
Erlaubt dem Client, bestimmte Umgebungsvariablen an den Server zu übertragen:
| Variable | Bedeutung |
|---|---|
LANG |
Standardsprache / Zeichenkodierung (z. B. de_DE.UTF-8)
|
LC_*</code
|