- 1 1. Einführung
- 2 2. Grundlegende SSH‑Konfiguration
- 3 Fazit
- 4 3. SSH-Sicherheit verstärken
- 5 Fazit
- 6 4. Erweiterte SSH-Konfiguration
- 7 Fazit
- 8 5. SSH-Fehlerbehebung
- 9 Fazit
- 10 6. FAQ (Häufig gestellte Fragen)
- 10.1 6.1 Wie behebt man SSH‑Zeitüberschreitungsprobleme?
- 10.2 6.2 Was tun, wenn Sie Ihr SSH‑Passwort vergessen haben?
- 10.3 6.3 Wie verwendet man SSH unter Windows?
- 10.4 6.4 Wie konfiguriert man SSH auf Ubuntu WSL?
- 10.5 6.5 Zusätzliche Sicherheits‑Best‑Practices
- 10.6 6.6 Wie überwacht man SSH‑Protokolle in Echtzeit?
- 10.7 6.7 Tipps für eine bequemere Nutzung von SSH
- 11 Fazit
1. Einführung
Die Konfiguration von SSH unter Ubuntu ist essenziell für die Verwaltung entfernter Server. SSH (Secure Shell) ist ein Protokoll, das sichere, verschlüsselte Kommunikation ermöglicht, sodass Benutzer Server remote zugreifen, Befehle ausführen und Dateien übertragen können.
Dieser Artikel erklärt, wie man SSH unter Ubuntu konfiguriert – von den grundlegenden Installationsschritten bis zu erweiterten Sicherheitsmaßnahmen.
1.1 Warum SSH unter Ubuntu konfigurieren?
1.1.1 Was ist SSH?
SSH (Secure Shell) ist ein Protokoll, das sichere Kommunikation über ein Netzwerk ermöglicht. Es wird häufig zum Einloggen in entfernte Server, zum Übertragen von Dateien und zum Tunneln (Port‑Forwarding) verwendet. Im Gegensatz zu traditionellen Telnet‑ oder FTP‑Verbindungen verschlüsselt SSH sämtliche Kommunikation und bietet damit starke Sicherheit.
1.1.2 Wann SSH unter Ubuntu benötigt wird
Typische Szenarien, in denen SSH zur Verwaltung von Ubuntu aus der Ferne eingesetzt wird, umfassen:
- Cloud‑Server‑Administration : Linux‑Server auf AWS, GCP, Vultr und anderen Plattformen werden in der Regel über SSH erreicht.
- Remote‑Operationen in LAN‑Umgebungen : Zugriff auf interne Server oder Entwicklungsmaschinen aus der Ferne.
- Verwaltung von IoT‑Geräten : Fernsteuerung eingebetteter Systeme wie Raspberry Pi.
Standardmäßig ist der SSH‑Server unter Ubuntu deaktiviert, daher muss er manuell installiert und konfiguriert werden, um SSH‑Zugriff zu ermöglichen.
2. Grundlegende SSH‑Konfiguration
Um SSH unter Ubuntu zu nutzen, muss der SSH‑Server (OpenSSH) installiert und korrekt konfiguriert werden. Dieser Abschnitt erklärt, wie man SSH installiert, Grundeinstellungen anpasst, die Firewall konfiguriert und sich mit dem Server verbindet.
2.1 Installation und Start von OpenSSH
2.1.1 Was ist OpenSSH?
OpenSSH (Open Secure Shell) ist eine Open‑Source‑Implementierung des SSH‑Protokolls. Es unterstützt Remote‑Verbindungen, sichere Dateiübertragungen (SCP und SFTP) sowie Port‑Forwarding.
2.1.2 Installation von OpenSSH
Ubuntu enthält standardmäßig keinen SSH‑Server, daher installieren Sie ihn mit dem folgenden Befehl:
sudo apt update && sudo apt install -y openssh-server
Damit werden die Paketlisten aktualisiert und der OpenSSH‑Server installiert.
2.1.3 Starten von SSH und Aktivieren des automatischen Starts
Nach der Installation starten Sie den SSH‑Server und aktivieren den automatischen Start:
sudo systemctl enable --now ssh
Die Option enable sorgt dafür, dass SSH beim Systemstart automatisch gestartet wird.
2.1.4 Überprüfen des SSH‑Status
Verifizieren Sie, dass SSH läuft:
systemctl status ssh
Wenn die Ausgabe active (running) zeigt, funktioniert SSH einwandfrei:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago
Zeigt sie inactive (dead) oder failed an, starten Sie SSH manuell:
sudo systemctl start ssh
2.2 Konfiguration der Firewall (UFW)
Ubuntu enthält eine einfache Firewall namens ufw (Uncomplicated Firewall). Sie müssen SSH‑Verbindungen durch diese Firewall zulassen.
2.2.1 Überprüfen des UFW‑Status
sudo ufw status
Beispielausgabe (inactive):
Status: inactive
Beispielausgabe (active):
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Zulassen von SSH
sudo ufw allow ssh
Oder explizit:
sudo ufw allow 22/tcp
2.2.3 Aktivieren von UFW
sudo ufw enable
2.2.4 Überprüfen der UFW‑Regeln
sudo ufw status verbose
Beispiel:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2.3 Grundlegende SSH‑Verbindungsmethoden
Sobald SSH läuft, verbinden Sie sich von einem Client‑Rechner.
2.3.1 Verbindung von Linux/macOS
ssh username@server-ip-address
Beispiel:
ssh user@192.168.1.100
Bei der ersten Verbindung kann eine Sicherheitswarnung angezeigt werden:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Geben Sie yes ein, um fortzufahren.
2.3.2 Verbindung von Windows aus
Sie können PowerShell oder PuTTY verwenden.
Verwendung von PowerShell (Windows 10+ enthält SSH):
ssh username@server-ip-address
Verwendung von PuTTY:
- Laden Sie PuTTY von der offiziellen Seite herunter.
- Öffnen Sie PuTTY und geben Sie die Server-IP in
Host Name (or IP address)ein. - Wählen Sie
SSHals Verbindungstyp. - Klicken Sie auf Open und melden Sie sich an.
Fazit
Dieser Abschnitt behandelte die Grundlagen der Einrichtung von SSH auf Ubuntu:
- Wie man OpenSSH installiert und startet
- Wie man SSH-Verbindungen mit UFW erlaubt
- Wie man sich von Linux/macOS und Windows aus verbindet
3. SSH-Sicherheit verstärken
SSH ist leistungsfähig, aber wenn es mit den Standardeinstellungen belassen wird, erhöht das das Sicherheitsrisiko. Angreifer versuchen häufig Brute-Force-Anmeldeversuche oder Port-Scans. Die Verstärkung der SSH-Sicherheit ist unerlässlich.
3.1 Root-Login deaktivieren
Der Root-Login bietet vollständige Systemkontrolle und ist ein Hauptziel für Angreifer. Das Deaktivieren erhöht die Sicherheit.
3.1.1 Schritte
- Bearbeiten Sie die SSH-Konfigurationsdatei:
sudo nano /etc/ssh/sshd_config
- Ändern Sie die Zeile zu:
PermitRootLogin no
- Starten Sie SSH neu:
sudo systemctl restart ssh
- Bestätigen Sie die Änderung:
sudo grep PermitRootLogin /etc/ssh/sshd_config
Wenn die Ausgabe PermitRootLogin no lautet, ist die Einstellung übernommen.
3.2 Passwort-Authentifizierung deaktivieren und Schlüssel-Authentifizierung verwenden
Die Authentifizierung mit öffentlichen Schlüsseln ist sicherer als Passwörter und reduziert das Risiko von Brute-Force-Angriffen.
3.2.1 SSH-Schlüssel erstellen
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Dies erzeugt zwei Dateien:
- id_rsa (privater Schlüssel) — lokal aufbewahren, niemals teilen
- id_rsa.pub (öffentlicher Schlüssel) — auf den Server hochladen
3.2.2 Öffentlichen Schlüssel hochladen
ssh-copy-id username@server-ip-address
3.2.3 Passwort-Authentifizierung deaktivieren
sudo nano /etc/ssh/sshd_config
Bearbeiten Sie:
PasswordAuthentication no
Starten Sie SSH neu:
sudo systemctl restart ssh
3.3 SSH-Zugriff nur für bestimmte Benutzer erlauben
Um die SSH-Sicherheit zu erhöhen, können Sie den Zugriff einschränken, sodass nur bestimmte Benutzer sich anmelden dürfen.
3.3.1 Konfigurationsschritte
- Öffnen Sie die SSH-Konfigurationsdatei
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Fügen Sie die Benutzer hinzu, die per SSH Zugriff haben dürfen:
AllowUsers username1 username2
- Starten Sie SSH neu, um die Einstellungen zu übernehmen:
sudo systemctl restart ssh
3.4 Ändern des SSH-Ports
Da Port 22 häufig von Angreifern ins Visier genommen wird, kann das Ändern des Standardports die Sicherheit erhöhen.
3.4.1 Konfigurationsschritte
- Öffnen Sie die SSH-Konfigurationsdatei:
sudo nano /etc/ssh/sshd_config
- Ändern Sie die Port-Einstellung, z.B.:
Port 2200
- Starten Sie SSH neu:
sudo systemctl restart ssh
3.4.2 Firewall-Einstellungen aktualisieren
Wenn Sie den Port ändern, aktualisieren Sie UFW:
sudo ufw allow 2200/tcp
Überprüfen Sie die neue Regel:
sudo ufw status
3.5 Brute-Force-Angriffe mit Fail2Ban verhindern
Fail2Ban erkennt fehlgeschlagene Anmeldeversuche und blockiert die angreifende IP für eine bestimmte Zeit.
3.5.1 Fail2Ban installieren
sudo apt install fail2ban -y
3.5.2 Konfigurationsdatei erstellen
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Datei öffnen:
sudo nano /etc/fail2ban/jail.local
Einstellungen ändern:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Fail2Ban neu starten
sudo systemctl restart fail2ban
3.5.4 Bannliste prüfen
sudo fail2ban-client status sshd
Fazit
Dieser Abschnitt erklärte Methoden zur Verbesserung der SSH-Sicherheit:
- Root-Login deaktivieren
- Passwort-Authentifizierung deaktivieren und Schlüssel-Authentifizierung aktivieren
- SSH-Zugriff auf bestimmte Benutzer beschränken
- Den SSH-Port ändern
- Fail2Ban verwenden, um unbefugte Versuche zu blockieren
Die Implementierung dieser Einstellungen hilft, eine sichere SSH-Umgebung zu schaffen.

4. Erweiterte SSH-Konfiguration
Nachdem die grundlegende SSH-Konfiguration und Sicherheits-Härtung abgeschlossen sind, können Sie zu erweiterten Funktionen für verbesserte Flexibilität und Sicherheit übergehen. Dieser Abschnitt behandelt die Verwaltung von ssh.socket (Ubuntu 22.10+), SSH-Tunnel, das Lauschen auf mehreren Ports und IP-basierte Zugriffskontrolle.
4.1 Verwendung von ssh.socket unter Ubuntu 22.10+
In Ubuntu 22.10+ kann SSH von ssh.socket anstelle von ssh.service verwaltet werden. Diese socket-basierte Aktivierung startet SSH nur bei Bedarf und spart Systemressourcen.
4.1.1 ssh.socket-Status prüfen
sudo systemctl status ssh.socket
Beispielausgabe (aktiviert):
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC
4.1.2 ssh.socket aktivieren oder deaktivieren
Socket aktivieren:
sudo systemctl enable --now ssh.socket
Zurück zum klassischen ssh.service wechseln:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
4.2 SSH-Tunneling (Port-Weiterleitung)
SSH-Tunneling stellt sichere Kommunikationskanäle zwischen lokalen und entfernten Systemen her.
4.2.1 Lokale Port-Weiterleitung
Nützlich, um sicher eine Verbindung zu entfernten Datenbanken oder internen Diensten herzustellen.
Beispiel: Zugriff auf einen entfernten MySQL-Server auf Port 3306
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Reverse Port-Weiterleitung
Lokale Dienste über einen entfernten Server bereitstellen.
Beispiel: Lokalen Webserver auf Remote-Port 8080 veröffentlichen
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Dynamische Port-Weiterleitung (SOCKS-Proxy)
SSH als SOCKS-Proxy für anonymes Surfen verwenden.
ssh -D 1080 username@server-ip-address
4.3 Auf mehreren Ports lauschen
SSH kann auf mehr als einem Port lauschen, um Flexibilität in verschiedenen Netzwerkumgebungen zu bieten.
4.3.1 Konfigurationsschritte
/etc/ssh/sshd_configbearbeiten:sudo nano /etc/ssh/sshd_config
- Mehrere
Port-Zeilen hinzufügen:Port 22 Port 2200
- SSH neu starten:
sudo systemctl restart ssh
- Den neuen Port mit UFW zulassen:
sudo ufw allow 2200/tcp
4.4 SSH nur von bestimmten IP-Adressen zulassen
Die Beschränkung des SSH-Zugriffs nach IP-Adresse bietet eine starke Sicherheitskontrolle.
4.4.1 /etc/hosts.allow konfigurieren
sudo nano /etc/hosts.allow
Erlaubte IP-Adresse hinzufügen:
sshd: 192.168.1.100
4.4.2 /etc/hosts.deny konfigurieren
sudo nano /etc/hosts.deny
Alle anderen ablehnen:
sshd: ALL
Fazit
Dieser Abschnitt behandelte fortgeschrittene SSH-Konfigurationsthemen:
- Verwaltung von
ssh.socketin Ubuntu 22.10+ - Verwendung von SSH-Tunneln (Port-Weiterleitung)
- Auf mehreren SSH-Ports lauschen
- SSH-Zugriff auf bestimmte IP-Adressen beschränken
Die Anwendung dieser Konfigurationen erhöht sowohl die Sicherheit als auch die Benutzerfreundlichkeit.
5. SSH-Fehlerbehebung
Selbst bei korrekter Konfiguration können SSH-Verbindungen gelegentlich fehlschlagen. Dieser Abschnitt erklärt häufige SSH-Probleme und deren Lösungen.
5.1 Wenn SSH keine Verbindung herstellen kann
Wenn SSH Connection refused zurückgibt oder ein Timeout auftritt, können mögliche Ursachen Service-Probleme, Port-Fehlkonfiguration oder Firewall-Einschränkungen sein.
5.1.1 SSH-Dienst läuft nicht
sudo systemctl status ssh
Lösung:
- Wenn
inactiveoderfailed, SSH neu starten:sudo systemctl restart ssh
- Autostart aktivieren:
sudo systemctl enable ssh
5.1.2 SSH-Port nicht geöffnet
ssh -p 2200 username@server-ip-address
Offene Ports prüfen:
sudo netstat -tulnp | grep ssh
Oder:
ss -tulnp | grep ssh
5.1.3 Firewall (UFW) blockiert SSH
sudo ufw status
SSH zulassen:
sudo ufw allow 22/tcp
Wenn ein benutzerdefinierter Port verwendet wird:
sudo ufw allow 2200/tcp
5.2 Authentifizierungsfehler
5.2.1 Falscher Benutzername oder falsches Passwort
ssh username@server-ip-address
5.2.2 Öffentlicher Schlüssel nicht korrekt installiert
cat ~/.ssh/authorized_keys
Stellen Sie sicher, dass er mit dem lokalen id_rsa.pub übereinstimmt.
5.2.3 Falsche Berechtigungen im .ssh‑Verzeichnis
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Stellen Sie außerdem sicher:
chmod 755 /home/username
5.3 Instabile SSH‑Verbindungen oder unerwartete Trennungen
5.3.1 ClientAliveInterval anpassen
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
5.3.2 Lokale Client‑Einstellungen anpassen
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
5.4 SSH‑Protokolle anzeigen
5.4.1 Echtzeit‑Protokolle anzeigen
sudo journalctl -u ssh -f
5.4.2 Frühere Protokolle anzeigen
sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log
Fazit
Dieser Abschnitt erklärte häufige SSH‑Probleme und wie man sie behebt:
- Überprüfen Sie, ob der SSH‑Dienst läuft
- Überprüfen Sie offene Ports
- Firewall‑Einstellungen prüfen
- Stellen Sie sicher, dass die Schlüssel‑Authentifizierung korrekt ist
- Zeitüberschreitungs‑ und Trennungsprobleme beheben
- SSH‑Protokolle analysieren
Die meisten SSH‑Probleme entstehen durch Fehlkonfigurationen oder Netzwerkbeschränkungen. Verwenden Sie diese Fehlersuchschritte, um Probleme effizient zu lösen.
6. FAQ (Häufig gestellte Fragen)
Dieser Abschnitt beantwortet häufige Fragen zur Nutzung und Konfiguration von SSH.
6.1 Wie behebt man SSH‑Zeitüberschreitungsprobleme?
6.1.1 Serverseitige Einstellungen
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
6.1.2 Clientseitige Einstellungen
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 Was tun, wenn Sie Ihr SSH‑Passwort vergessen haben?
6.2.1 Wenn Sie physischen Zugriff haben
- In den Single‑User‑Modus booten (wählen Sie
recovery modeim GRUB) - Passwort zurücksetzen:
passwd username
- Das System neu starten
6.2.2 Wenn physischer Zugriff nicht möglich ist (Cloud‑VPS)
- Verwenden Sie die vom Hosting‑Anbieter bereitgestellte VPS‑Konsole
- Verwenden Sie die Authentifizierung mit öffentlichem Schlüssel
6.3 Wie verwendet man SSH unter Windows?
6.3.1 Verwendung von PowerShell
ssh username@server-ip-address
6.3.2 Verwendung von PuTTY
- Laden Sie PuTTY herunter und installieren Sie es
- Geben Sie die Server‑IP‑Adresse in
Host Nameein - Wählen Sie
SSHals Verbindungstyp - Melden Sie sich mit Benutzername und Passwort an
6.4 Wie konfiguriert man SSH auf Ubuntu WSL?
6.4.1 SSH‑Server installieren
sudo apt update && sudo apt install openssh-server
6.4.2 SSH‑Einstellungen ändern
PasswordAuthentication yes
Starten Sie SSH manuell (WSL verwendet kein systemd):
sudo service ssh start
6.5 Zusätzliche Sicherheits‑Best‑Practices
6.5.1 Fail2Ban verwenden
sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban
6.5.2 SSH‑Port ändern
Port 2200
sudo ufw allow 2200/tcp
6.6 Wie überwacht man SSH‑Protokolle in Echtzeit?
sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh
6.7 Tipps für eine bequemere Nutzung von SSH
6.7.1 .ssh/config für einfache Anmeldungen verwenden
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Dann verbinden Sie sich mit:
ssh myserver
6.7.2 ssh-agent verwenden
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Fazit
Dieser Abschnitt fasste häufig gestellte Fragen zu SSH zusammen:
- So beheben Sie SSH-Timeout-Probleme
- So stellen Sie ein vergessenes Passwort wieder her
- So verwenden Sie SSH unter Windows und WSL
- Best Practices für die Sicherheit
- So überprüfen Sie SSH-Protokolle
- Tipps, um SSH mit
.ssh/configbequemer zu machen
Durch die Anwendung dieser Techniken können Sie eine sichere und effiziente SSH-Umgebung aufbauen und Remote-Server reibungslos verwalten.


