Der SSH-Server "OpenSSH"

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

apt update && 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

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:

IPv4 (Beispiel)

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

IPv6 (Beispiel)

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 ":" --fields 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".

TL;DR

root@server:~# apt-get --purge -y autoremove openssh

Ausführlich

Das Paket „openssh“ kann mit folgender Kommandozeile deinstalliert werden:

root@server:~# apt-get remove -y openssh

Soll zusätzliche die Konfiguration entfernt werden, so kann dies mit folgender Kommandozeile erfolgen:

root@server:~# apt-get purge -y openssh

Sollen abhängige und nicht von anderen Programmen benötigte Pakete entfernt werden, so kann dies mit folgender Kommandozeile erfolgen:

root@server:~# apt-get autoremove -y

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

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • der_ssh-server_openssh.txt
  • Zuletzt geändert: 01.12.2019
  • von Till Neuhaus