Error loading plugin twofactorgoogleauth
Error: Class "dokuwiki\plugin\twofactor\Provider" not found
More info is available in the error log.

SSH-Server "OpenSSH"

Diese Veröffentlichung widmet sich dem Einsatz eines SSH-Servers (siehe auch: SSH-Server) auf Basis des Programms OpenSSH.

sudo apt update && sudo apt install --yes openssh-server

Hinweis:
Die Installation von „openssh-server“ installiert auch den Dateiserver „openssh-sftp-server“.

Wir empfehlen die Beschränkung der SSH-Host-Keys auf das ED25519-Kryptosystem.

Wir empfehlen vor jeder Änderungen an der SSH-Server-Konfiguration eine Sicherheitskopie der aktuellen SSH Serverkonfiguration zu erstellen:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%F_%T).bak

Folgender Befehl entfernt die Kommentierung der Zeile mit dem ED25519-Schlüssel und setzt ihn somit als Standard:

sudo sed --in-place '/#HostKey.*ed25519_key/s/^#//g' /etc/ssh/sshd_config

Anschließend startet man den SSH-Server neu, damit die Konfigurationsdatei neu eingelesen wird:

sudo service ssh restart

Wenn auf dem OpenSSH-Server (oder davor) eine Firewall aktiv ist, so muss muss der SSH-Port (Standard: Port 22) in der Firewall freigegeben werden. Im Fall der von uns empfohlenen Firewall ufw - Uncomplicated Firewall kann dies zum Beispiel durch folgende Kommandos erreicht werden:

sudo ufw allow from 192.168.178.0/24 to any app SSH # ggf. den IPv4-Bereich anpassen
sudo ufw allow from fe80:: to any app SSH # ggf. den IPv6-Bereich anpassen
sudo ufw reload# Regeln anwenden

Damit sich ein SSH-Client zu einem SSH-Server verbinden kann, muss dessen IP-Adresse oder Domainname bekannt sein. Man kann die lokalen IP Adressen wie folgt ermitteln:

ip addr show | grep 192 | cut --delimiter " " --fields 6 | cut --delimiter "/" --fields 1
ip addr show | grep fe80 | cut --delimiter " " -f 6 | cut --delimiter "/" --fields 1

Damit ein SSH-Client einen SSH-Server verifizieren kann, muss dessen „Host-Key-Fingerprint“ (Fingerabdruck) bekannt sein. Man kann z.B. den Fingerabdruck eines „ED25519-SSH-Host-Key“-Fingerabdruck wie folgt ermitteln:

sudo ssh-keygen -lf /etc/ssh/*ed25519_key | cut --delimiter=":" --field=2

Mit den IP-Adressen und der Prüfsumme kann nun eine SSH-Anmeldung von einem Client zu dem Server hergestellt werden. Es empfiehlt sich im ersten Schritt den SSH-Schlüssel des Client-Kontos zum Server-Konto zu kopieren:

ssh-copy-id ssh-user@ssh-server

Wenn der Zugang zum SSH-Server via Schlüssel erfolgt (wozu wir ausdrücklich raten), so kann die Passwort-Authentifizierung mit folgender Befehlszeile deaktiviert werden:

sudo sed --in-place '/#PasswordAuthentication yes/s/^#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config

Anschließend sollte man den SSH-Server neu starten:

sudo service ssh restart

Während der Installation von „openssh-server“ werden automatisch Schlüssel für alle gängigen Kryptosysteme für den Rechner erzeugt („Host-Keys“). Da zum Zeitpunkt der Schlüsselerzeugung evtl. noch nicht genügend Entropie vorhanden war, empfiehlt es sich die „alten“ Schlüssel zu sichern und anschließend neue zu generieren:

Zunächst wechselt man in das Verzeichnis, in welchem die Host-Keys liegen. Auf einem Debian-Server ist das „/etc/ssh/“:

root@server:~# cd /etc/ssh/

Nun erstellt man eine Sicherheitskopie der aktuelle Schlüssel:

root@server:~# tar -czf "alte Schlüssel.tar.gz" ssh_host*

Die alten Schlüssel kann man nun gelöscht:

root@server:~# rm ssh_host*

Jetzt können die neuen Schlüssel generiert werden:

root@server:~# ssh-keygen -A

Alle Schritte in einer Zeile:

root@server:~# cd /etc/ssh/ && tar -czf "alte Schlüssel.tar.gz" ssh_host* && rm ssh_host* && ssh-keygen -A

Oder als Skript:

# Skript zum sichern alter Host-Keys und zum generieren neuer Schlüssel

#!/bin/bash

cd /etc/ssh/
tar -czf "alte Schlüssel.tar.gz" ssh_host*
rm ssh_host*
ssh-keygen -A

Die Sicherheitskopien der alten Schlüssel können abschließend noch auf einen Backup-Server verschoben werden. Per Terminal kann folgende Muster-Kommandozeile verwendet werden:

scp /etc/ssh/"alte Schlüssel.tar.gz" backup-server:/"Sicherung Server"/

Um über neue Entwicklungen von OpenSSH auf dem Laufenden zu bleiben, empfiehlt sich das Abonnement der Mailingliste "OpenSSH-Unix-Announce".

Unter Beibehaltung der Konfiguration:

sudo apt-get --yes autoremove openssh

Mit Entfernung der Konfiguration:

sudo apt-get --purge --yes autoremove openssh

Für Fragen, Verbesserungsvorschläge, Alternativen oder sonstiges Feedback bitten wir um eine Mail an hallo@neuhaus-it.de. Das hilft uns die Qualität unserer Veröffentlichungen zu verbessern und somit anderen Kunden bessere Inhalte zu bieten.

  • gnu_linux/anwendungen/ssh-server_openssh.txt
  • Zuletzt geändert: 07.06.2021
  • von Till Neuhaus