====== 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}}