SSH Server

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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