SSH Server: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 110: Zeile 110:
  
 
== Erklärung der Standardeinstellungen ==
 
== 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"
 
{| class="wikitable"
! Variable !! Bedeutung
+
! Option !! Wert !! Erklärung
 
|-
 
|-
| <code>LANG</code> || Standardsprache / Zeichenkodierung (z. B. <code>de_DE.UTF-8</code>)
+
| <code>Include</code>
 +
| <code>/etc/ssh/sshd_config.d/*.conf</code>
 +
| Bindet alle <code>.conf</code>-Dateien aus dem Verzeichnis <code>/etc/ssh/sshd_config.d/</code> ein. Ermöglicht modulare Konfiguration. '''Hinweis:''' <code>Include</code> steht ganz am Anfang, da Drop-in-Dateien Werte aus <code>sshd_config</code> überschreiben können.
 
|-
 
|-
| <code>LC_*</code
+
| <code>KbdInteractiveAuthentication</code>
 
+
| <code>no</code>
 
+
| Deaktiviert die tastaturbasierte interaktive Authentifizierung (früher <code>ChallengeResponseAuthentication</code>). Betrifft z. B. Einmalpasswörter (OTP) oder PAM-Abfragen mit Benutzerinteraktion.
 +
|-
 +
| <code>UsePAM</code>
 +
| <code>yes</code>
 +
| Aktiviert PAM (Pluggable Authentication Modules) – das zentrale Authentifizierungssystem unter Linux. Übernimmt Passwortprüfung, Sitzungsverwaltung und Zugriffskontrolle. Bleibt auch bei deaktiviertem Passwort-Login aktiv.
 +
|-
 +
| <code>X11Forwarding</code>
 +
| <code>yes</code>
 +
| Erlaubt die Weiterleitung grafischer Anwendungen über SSH (<code>ssh -X</code>). Auf reinen Produktionsservern empfiehlt sich <code>no</code>, da es ein potenzielles Sicherheitsrisiko darstellt.
 +
|-
 +
| <code>PrintMotd</code>
 +
| <code>no</code>
 +
| Deaktiviert die Ausgabe der Message of the Day (<code>/etc/motd</code>) durch den SSH-Daemon. Die Ausgabe übernimmt stattdessen PAM, um doppelte Ausgaben zu vermeiden.
 +
|-
 +
| <code>AcceptEnv</code>
 +
| <code>LANG LC_* COLORTERM NO_COLOR</code>
 +
| Erlaubt dem Client, Umgebungsvariablen zu übertragen: Sprache (<code>LANG</code>), Locale-Einstellungen (<code>LC_*</code>), Terminal-Farbunterstützung (<code>COLORTERM</code>) und Farb-Deaktivierung (<code>NO_COLOR</code>).
 +
|-
 +
| <code>Subsystem sftp</code>
 +
| <code>/usr/lib/openssh/sftp-server</code>
 +
| Aktiviert das SFTP-Subsystem und gibt den Pfad zum SFTP-Server-Programm an. Ohne diese Zeile sind keine SFTP-Verbindungen möglich.
 +
|}
  
 
== Siehe auch ==
 
== Siehe auch ==

Version vom 11. April 2026, 16:55 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

Option Wert Erklärung
Include /etc/ssh/sshd_config.d/*.conf Bindet alle .conf-Dateien aus dem Verzeichnis /etc/ssh/sshd_config.d/ ein. Ermöglicht modulare Konfiguration. Hinweis: Include steht ganz am Anfang, da Drop-in-Dateien Werte aus sshd_config überschreiben können.
KbdInteractiveAuthentication no Deaktiviert die tastaturbasierte interaktive Authentifizierung (früher ChallengeResponseAuthentication). Betrifft z. B. Einmalpasswörter (OTP) oder PAM-Abfragen mit Benutzerinteraktion.
UsePAM yes Aktiviert PAM (Pluggable Authentication Modules) – das zentrale Authentifizierungssystem unter Linux. Übernimmt Passwortprüfung, Sitzungsverwaltung und Zugriffskontrolle. Bleibt auch bei deaktiviertem Passwort-Login aktiv.
X11Forwarding yes Erlaubt die Weiterleitung grafischer Anwendungen über SSH (ssh -X). Auf reinen Produktionsservern empfiehlt sich no, da es ein potenzielles Sicherheitsrisiko darstellt.
PrintMotd no Deaktiviert die Ausgabe der Message of the Day (/etc/motd) durch den SSH-Daemon. Die Ausgabe übernimmt stattdessen PAM, um doppelte Ausgaben zu vermeiden.
AcceptEnv LANG LC_* COLORTERM NO_COLOR Erlaubt dem Client, Umgebungsvariablen zu übertragen: Sprache (LANG), Locale-Einstellungen (LC_*), Terminal-Farbunterstützung (COLORTERM) und Farb-Deaktivierung (NO_COLOR).
Subsystem sftp /usr/lib/openssh/sftp-server Aktiviert das SFTP-Subsystem und gibt den Pfad zum SFTP-Server-Programm an. Ohne diese Zeile sind keine SFTP-Verbindungen möglich.

Siehe auch