====== SSH-Server "OpenSSH" ======
Diese Veröffentlichung widmet sich dem Einsatz eines [[wpde>SSH]]-Servers (siehe auch: [[uu>SSH/#Der-SSH-Server|SSH-Server]]) auf Basis des Programms [[https://www.openssh.com/|OpenSSH]].
===== Installation =====
sudo apt update && sudo apt install --yes openssh-server
**Hinweis:**\\
Die Installation von "openssh-server" installiert auch den Dateiserver "openssh-sftp-server".
===== SSH-Host-Keys auf ED25519 begrenzen =====
Wir empfehlen die Beschränkung der [[https://www.ssh.com/ssh/host-key|SSH-Host-Key]]s auf das [[entwuerfe:ed25519|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 [[gnu_linux:anwendungen:firewall_ufw_uncomplicated_firewall|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
===== IP-Adresse eines SSH-Servers ermitteln =====
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
===== Prüfsumme eines SSH-Host-Keys ermitteln =====
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
===== Passwort-Authentifizierung deaktivieren =====
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
===== alte Schlüssel sichern; neue Schlüssel generieren =====
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"/
===== informiert bleiben =====
Um über neue Entwicklungen von OpenSSH auf dem Laufenden zu bleiben, empfiehlt sich das Abonnement der [[https://lists.mindrot.org/mailman/listinfo/openssh-unix-announce|Mailingliste "OpenSSH-Unix-Announce"]].
===== Deinstallation (samt Konfiguration) =====
Unter Beibehaltung der Konfiguration:
sudo apt-get --yes autoremove openssh
Mit Entfernung der Konfiguration:
sudo apt-get --purge --yes autoremove openssh
===== empfohlene nächste Schritte =====
* [[:?id=tag:ssh&do=showtag&tag=SSH|weitere Veröffentlichung zum Thema SSH]]
* [[:?id=tag:ssh&do=showtag&tag=SSH|weitere Anleitungen]]
* [[entwuerfe:webserver|Webserver]]
===== Qualitätssicherung =====
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.
{{tag>Beitrag Anleitung SSH SSH-Server OpenSSH}}