SSH Server: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
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 (wie tail -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


Siehe auch