SSH für Linux: Sichere Remote-Verbindungen herstellen und verwalten
Was ist SSH und wie funktioniert es?
SSH (Secure Shell) ist ein Netzwerkprotokoll, das dir eine sichere Remote-Verbindung zu einem anderen Computer über ein unsicheres Netzwerk ermöglicht, wie beispielsweise das Internet. Es bietet verschlüsselte Kommunikation, Authentifizierung und andere sichere Funktionen für die Verwaltung deiner Remote-Server oder den Zugriff auf andere Computer.
Wie funktioniert SSH?
Wenn du eine SSH-Verbindung herstellst, etablierst du einen sicheren Tunnel zwischen deinem lokalen Computer und dem Remote-Computer. Dieser Tunnel verschlüsselt alle Daten, die zwischen den beiden Computern übertragen werden, einschließlich Befehlen, Ausgaben und Dateien.
Die Authentifizierung erfolgt in der Regel über einen Benutzernamen und ein Passwort. Alternativ kannst du auch SSH-Schlüsselpaare verwenden, die eine höhere Sicherheit bieten. SSH-Schlüssel sind kryptografische Schlüssel, die aus einem öffentlichen Schlüssel und einem privaten Schlüssel bestehen. Der öffentliche Schlüssel wird auf dem Remote-Computer gespeichert, während der private Schlüssel auf deinem lokalen Computer aufbewahrt wird. Wenn du eine SSH-Verbindung herstellst, sendet dein Computer den öffentlichen Schlüssel an den Remote-Computer, der ihn mit dem gespeicherten Schlüssel vergleicht, um deine Identität zu bestätigen.
Vorteile von SSH
- Sichere Kommunikation: SSH verschlüsselt alle Daten, die zwischen den Computern übertragen werden, wodurch unbefugter Zugriff verhindert wird.
- Authentifizierung: SSH ermöglicht die Authentifizierung über Passwörter oder SSH-Schlüssel, was die Sicherheit erhöht.
- Fernverwaltung: SSH ermöglicht die Fernverwaltung von Servern und anderen Computern, ohne dass du physisch am Gerät sein musst.
- Dateitransfer: SSH unterstützt auch den sicheren Dateitransfer zwischen Computern.
Installieren und Konfigurieren von SSH auf Linux
Um SSH auf deinem Linux-System zu aktivieren, musst du zunächst den SSH-Server installieren und konfigurieren. Dies ist ein relativ unkomplizierter Vorgang, der mit ein paar einfachen Befehlen ausgeführt werden kann.
Installieren des SSH-Servers
Die meisten Linux-Distributionen enthalten SSH bereits im Standard-Repository. Um den SSH-Server zu installieren, führe den folgenden Befehl aus:
sudo apt-get install openssh-server (Debian/Ubuntu)
sudo yum install openssh-server (Red Hat/CentOS)
Konfigurieren des SSH-Servers
Sobald der SSH-Server installiert ist, musst du seine Konfigurationsdatei bearbeiten, um die gewünschten Einstellungen festzulegen. Diese Datei befindet sich in der Regel unter /etc/ssh/sshd_config
.
Öffne die Datei mit einem Texteditor und suche nach den folgenden Einstellungen:
-
Port: Standardmäßig lauscht SSH auf Port 22. Du kannst diesen Port ändern, indem du den Wert nach der Zeile
Port
änderst. - ListenAddress: Diese Einstellung gibt die Adresse an, an der SSH lauscht. Standardmäßig ist dies 0.0.0.0, was bedeutet, dass SSH auf allen Netzwerkschnittstellen lauscht.
-
PermitRootLogin: Diese Einstellung steuert, ob Root-Benutzer sich per SSH anmelden können. Aus Sicherheitsgründen wird empfohlen, dies auf
no
zu setzen. - PasswordAuthentication: Diese Einstellung aktiviert oder deaktiviert die Authentifizierung per Kennwort. Es wird dringend empfohlen, stattdessen die Authentifizierung per SSH-Schlüssel zu verwenden.
- ChallengeResponseAuthentication: Diese Einstellung deaktiviert die Challenge-Response-Authentifizierung, die eine schwache und unsichere Authentifizierungsmethode darstellt.
Nachdem du die gewünschten Einstellungen vorgenommen hast, speichere und schließe die Datei.
Neustarten des SSH-Servers
Um die Änderungen zu übernehmen, musst du den SSH-Server neu starten. Führe dazu den folgenden Befehl aus:
sudo service ssh restart (Debian/Ubuntu)
sudo systemctl restart sshd (Red Hat/CentOS)
Firewall-Einstellungen
Wenn du eine Firewall verwendest, musst du den SSH-Port freigeben, um eingehende Verbindungen zu ermöglichen. Führe dazu den folgenden Befehl aus:
sudo ufw allow 22 (UFW-Firewall)
sudo firewall-cmd --add-port=22/tcp --permanent (firewalld)
Erzeugen und Verwalten von SSH-Schlüsselpaaren
Was sind SSH-Schlüsselpaare?
SSH (Secure Shell) ist ein verschlüsseltes Protokoll, das eine sichere Remote-Verbindung zwischen zwei Computern ermöglicht. SSH-Schlüsselpaare spielen eine entscheidende Rolle bei der Authentifizierung und dem Schutz deiner Daten während SSH-Verbindungen.
Ein SSH-Schlüsselpaar besteht aus einem öffentlichen Schlüssel und einem privaten Schlüssel. Der öffentliche Schlüssel wird auf dem Remote-Server gespeichert, während der private Schlüssel auf deinem lokalen Computer bleibt. Wenn du dich mit SSH verbindest, verwendet der Server den öffentlichen Schlüssel, um deine Identität zu überprüfen, und der private Schlüssel wird verwendet, um deine Verbindung zu verschlüsseln.
Erzeugen eines SSH-Schlüsselpaares
Um ein SSH-Schlüsselpaar zu erzeugen, kannst du den folgenden Befehl in deinem Terminal verwenden:
ssh-keygen -t rsa
Du wirst aufgefordert, einen Speicherort für deine Schlüssel anzugeben und eine Passphrase für deinen privaten Schlüssel einzugeben. Es wird empfohlen, eine sichere Passphrase zu wählen, da diese zum Entschlüsseln deines privaten Schlüssels verwendet wird.
Verwalten von SSH-Schlüsselpaaren
Sobald du ein SSH-Schlüsselpaar generiert hast, kannst du es mit den folgenden Befehlen verwalten:
- Schlüssel anzeigen:
cat ~/.ssh/id_rsa.pub
- Schlüssel auf den Remote-Server kopieren:
ssh-copy-id user@remote_server
- Schlüssel entfernen:
ssh-keygen -R user@remote_server
Vorteile der Verwendung von SSH-Schlüsselpaaren
Die Verwendung von SSH-Schlüsselpaaren bietet mehrere Vorteile gegenüber der Kennwortauthentifizierung:
- Höhere Sicherheit: SSH-Schlüsselpaare sind sicherer als Kennwörter, da sie nicht erraten oder gestohlen werden können.
- Bequemlichkeit: Du musst dich nicht jedes Mal, wenn du dich verbindest, mit einem Passwort anmelden.
- Automatisierte Authentifizierung: SSH-Schlüsselpaare ermöglichen eine automatisierte Authentifizierung, die den Fernzugriff erleichtert.
Fazit
Das Erzeugen und Verwalten von SSH-Schlüsselpaaren ist ein wichtiger Schritt zur Sicherstellung sicherer und bequemer Remote-Verbindungen über SSH. Indem du die in diesem Abschnitt beschriebenen Schritte befolgst, kannst du deine SSH-Verbindungen schützen und dein System vor unbefugtem Zugriff bewahren.
SSH-Tunnel zur Weiterleitung von Datenverkehr
SSH-Tunnel ermöglichen es dir, eine sichere Verbindung über ein unsicheres Netzwerk zu einer Remote-Ressource herzustellen. Sie leiten Datenverkehr über einen verschlüsselten Kanal um, wodurch sie sich ideal für den Zugriff auf Dienste eignen, die über ungeschützte Protokolle ausgeführt werden oder von Firewalls blockiert werden könnten.
Was sind SSH-Tunnel?
SSH-Tunnel sind virtuelle Verbindungen, die über einen SSH-Verschlüsselungskanal hergestellt werden. Sie ermöglichen es dir, Datenverkehr von deinem lokalen Computer über einen Remote-SSH-Server zu einer anderen Ressource zu leiten. Dadurch können Anwendungen, die über die Remote-Ressource ausgeführt werden, so erscheinen, als würden sie lokal ausgeführt.
So erstellst du SSH-Tunnel
Um einen SSH-Tunnel zu erstellen, musst du Folgendes tun:
- Lokalen Port identifizieren: Wähle einen lokalen Port für die eingehende Verbindung auf deinem Computer.
- Remote-Ressource angeben: Gib die IP-Adresse oder den Hostnamen der Remote-Ressource an, auf die du zugreifen möchtest.
- Remote-Port angeben: Gib den Port der Remote-Ressource an, die du weiterleiten möchtest.
- SSH-Befehl verwenden: Verwende den folgenden SSH-Befehl, um den Tunnel zu erstellen:
ssh -L <lokaler_Port>:<remote_Host>:<remote_Port> <Benutzername>@<Remote-Server>
Verwendung von SSH-Tunneln
SSH-Tunnel können für eine Vielzahl von Zwecken verwendet werden, darunter:
- Zugriff auf Webdienste: Greife auf Websites zu, die von Firewalls blockiert werden, indem du einen SSH-Tunnel zu einem Webproxy erstellst.
- Remote-Desktop-Zugriff: Greife remote auf einen Desktop über ein ungesichertes Netzwerk zu, indem du einen SSH-Tunnel zu einem VNC-Server erstellst.
- Datenbankverbindung: Stelle eine sichere Verbindung zu einer Datenbank her, indem du einen SSH-Tunnel zu einem Datenbankserver erstellst.
- SOCKS-Proxy: Erstelle einen SOCKS-Proxy, um den gesamten Datenverkehr von deinem Computer über einen SSH-Tunnel zu leiten.
Sicherheitserwägungen bei SSH-Tunneln
Denke bei der Verwendung von SSH-Tunneln an die folgenden Sicherheitserwägungen:
- Starke Authentifizierung: Verwende eine starke Authentifizierungsmethode wie SSH-Schlüsselpaare oder eine Zwei-Faktor-Authentifizierung.
- Verschlüsselter Datenverkehr: Der Datenverkehr, der durch den Tunnel geleitet wird, sollte verschlüsselt werden.
- Firewall-Konfiguration: Konfiguriere deine Firewall so, dass sie den Zugriff auf die lokalen Ports zulässt, die für SSH-Tunnel verwendet werden.
Sicherheitserwägungen bei der Verwendung von SSH
Die Verwendung von SSH bietet eine sichere Methode für Remote-Verbindungen, erfordert jedoch auch die Berücksichtigung verschiedener Sicherheitserwägungen:
Authentifizierungsmethoden
- Schlüsselbasierte Authentifizierung: Die sicherste Methode, bei der du dein privater Schlüssel verwendet wird, um deine Identität zu verifizieren. Verwende starke Passphrasen und bewahre deine Schlüssel sicher auf.
- Passwortbasierte Authentifizierung: Weniger sicher, aber für eine anfängliche Verbindung praktisch. Verwende immer starke Passwörter und aktiviere ggf. die Zwei-Faktor-Authentifizierung.
Schlüsselverwaltung
- Erstelle starke private Schlüssel: Verwende mindestens 2048-Bit-Schlüssel und bewahre sie sicher mit starken Passphrasen auf.
- Beschränke den Zugriff auf private Schlüssel: Stelle sicher, dass nur du auf deine privaten Schlüssel zugreifen kannst. Speichere sie nie als Klartext und schütze sie mit Dateiberechtigungen.
- Rotiere deine Schlüssel regelmäßig: Ersetze deine Schlüssel alle paar Monate, um das Risiko eines Schlüsseldiebstahls zu verringern.
Netzwerksicherheit
- Verwende sichere SSH-Ports: Verwende den Standardport 22 nicht, da er häufig Ziel von Angriffen ist. Konfiguriere stattdessen einen benutzerdefinierten, nicht weit verbreiteten Port.
- Aktiviere SSH-Protokollierung: Protokolliere alle SSH-Verbindungsversuche, um verdächtige Aktivitäten zu identifizieren. Konfiguriere Fail2ban, um automatische Angriffe zu blockieren.
- Verwende SSH-Tunneling: Leite Datenverkehr sicher über einen SSH-Tunnel weiter, um sensible Daten vor Abhören zu schützen.
Best Practices
- Halte deine SSH-Server auf dem neuesten Stand: Sichere dich, dass dein SSH-Server immer auf dem neuesten Stand ist, um bekannte Sicherheitslücken zu schließen.
- Deaktiviere unsichere Authentifizierungsmethoden: Deaktiviere die passwortbasierte Authentifizierung und zwingt alle Benutzer, Schlüssel für die Authentifizierung zu verwenden.
- Verwende SSH-Zertifikate: Verwende SSH-Zertifikate, um die Identität von Servern und Clients zu verifizieren und die Sicherheit weiter zu verbessern.
- Verwende Sicherheits-Plugins: Verwende SSHGuard oder ähnliche Plugins, um Brute-Force-Angriffe zu verhindern und die Sicherheit weiter zu verbessern.
Problembehandlung häufiger SSH-Fehler
Bei der Verwendung von SSH können verschiedene Fehler auftreten. Hier findest du eine Übersicht über häufige Probleme und Tipps zu ihrer Behebung:
Verbindung kann nicht hergestellt werden
- Fehlermeldung: Connection timed out oder Verbindung abgelehnt.
- Ursache: Der SSH-Server ist nicht erreichbar oder du verwendest die falsche Portnummer.
- Lösung: Überprüfe, ob der SSH-Server läuft und ob du die richtige Portnummer verwendest.
- Zusatztipp: Versuche, eine Verbindung mit dem IP-Adressen des Servers statt mit dem Hostnamen herzustellen.
Authentifizierung fehlgeschlagen
- Fehlermeldung: Permission denied (public key) oder Authentifizierung fehlgeschlagen.
- Ursache: Der SSH-Schlüssel ist nicht richtig konfiguriert oder du hast das falsche Passwort eingegeben.
- Lösung: Überprüfe, ob der SSH-Schlüssel im angegebenen Pfad vorhanden ist und die Berechtigungen korrekt gesetzt sind. Wenn du ein Passwort verwendest, stelle sicher, dass du es korrekt eingibst.
- Zusatztipp: Erwäge die Verwendung von Zwei-Faktor-Authentifizierung für zusätzliche Sicherheit.
%% (unknown) public key
- Ursache: Der SSH-Client hat den öffentlichen Schlüssel des Servers nicht erkannt.
-
Lösung: Überprüfe, ob der öffentliche Schlüssel des Servers zu deiner bekannten Hosts-Datei hinzugefügt wurde. Du kannst den Schlüssel mit dem Befehl
ssh-keygen -R [Server-IP-Adresse oder Hostname]
hinzufügen. - Zusatztipp: Verwende das Tool SSH-FP (SSH Fingerprint) von SSH.com, um den Fingerabdruck des öffentlichen Schlüssels zu überprüfen und sicherzustellen, dass er mit dem erwarteten übereinstimmt.
Verbindung wird getrennt
- Ursache: Zeitüberschreitung oder Netzwerkprobleme.
- Lösung: Erhöhe den Wert für KeepAlive in der SSH-Konfigurationsdatei. Überprüfe auch deine Netzwerkverbindung und Firewall-Einstellungen.
- Zusatztipp: Verwende ein SSH-Management-Tool wie MobaXterm, das automatische Wiederverbindungen ermöglicht.
Weitere Fehler
- Fehlermeldung: Kein passender Cipher gefunden.
- Ursache: Es gibt keine gemeinsamen Verschlüsselungsmethoden zwischen Client und Server.
- Lösung: Aktualisiere SSH auf beiden Systemen oder konfiguriere die zulässigen Verschlüsselungsmethoden explizit.
-
Zusatztipp: Verwende die Option
-c
auf dem SSH-Client, um eine bestimmte Verschlüsselungsmethode anzugeben.
Wenn du auf Probleme stößt, die in dieser Liste nicht aufgeführt sind, kannst du die folgenden Ressourcen zur weiteren Hilfe konsultieren:
Optimieren von SSH-Verbindungen für Leistung und Sicherheit
Eine optimierte SSH-Konfiguration kann die Verbindungsleistung verbessern und die Sicherheit erhöhen. Beachte folgende Tipps:
Komprimierung aktivieren
Die Aktivierung der Komprimierung kann die Bandbreitennutzung reduzieren, insbesondere bei langsamen Verbindungen. Füge die folgende Zeile zu deiner SSH-Konfigurationsdatei (~/.ssh/config
) hinzu:
Compression yes
Cipher-Auswahl
SSH unterstützt verschiedene Verschlüsselungsalgorithmen mit unterschiedlichen Sicherheits- und Leistungsmerkmalen. Wähle einen sicheren Algorithmus mit einer akzeptablen Geschwindigkeit für dein Netzwerk. Vermeide schwache Algorithmen wie "arcfour".
MAC-Algorithmen
Message Authentication Codes (MACs) werden verwendet, um die Integrität von SSH-Paketen zu schützen. Wähle einen starken MAC-Algorithmus wie "hmac-sha2-512" oder "hmac-sha2-256".
Session-Multiplexing
Session-Multiplexing ermöglicht die Übermittlung mehrerer Kanäle über eine einzelne SSH-Verbindung. Dies kann die Leistung für Anwendungen verbessern, die mehrere Verbindungen benötigen. Aktiviere Multiplexing, indem du Folgendes zu deiner Konfigurationsdatei hinzufügst:
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
TCP-Keepalive
TCP-Keepalive-Pakete werden in regelmäßigen Abständen gesendet, um eine Verbindung am Leben zu erhalten. Dies kann die Leistung verbessern, insbesondere bei inaktiven Verbindungen. Aktiviere Keepalives in der Konfigurationsdatei:
TCPKeepAlive yes
ServerAliveInterval 60
Port-Knocking
Port-Knocking ist eine erweiterte Sicherheitsmaßnahme, bei der nur zulässigen Clients der Zugriff auf den SSH-Port gewährt wird, nachdem sie eine bestimmte Sequenz von Port-Verbindungsversuchen durchgeführt haben. Konfiguriere Port-Knocking mit Hilfe von Firewall-Regeln und einem SSH-Server, der Port-Klopf-Ereignisse überwacht.
Firewall-Optimierung
Optimiere deine Firewall, um den SSH-Port (Standard 22) nur für vertrauenswürdige IP-Adressen zu öffnen. Verwende Intrusion Detection Systeme (IDS) und Netzwerküberwachungstools, um unberechtigte Verbindungsversuche zu erkennen und zu blockieren.
Erweiterte SSH-Funktionen wie Portweiterleitung und SOCKS-Proxys
Neben den grundlegenden Funktionen bietet SSH auch erweiterte Möglichkeiten, die deine Remote-Verbindungen noch vielseitiger und sicherer machen können.
Portweiterleitung
Die Portweiterleitung ermöglicht es dir, einen lokalen Port auf deinem Computer mit einem Remote-Port auf dem Zielserver zu verbinden. Dies kann nützlich sein, wenn du auf Dienste zugreifen möchtest, die auf dem Server blockiert sind, oder wenn du eine sichere Verbindung zu einem lokalen Dienst herstellen möchtest, der nur vom Internet aus zugänglich ist.
Um eine Portweiterleitung einzurichten, verwende die Option -L
in deinem SSH-Befehl:
ssh -L 8080:localhost:80 benutzername@ziel
Dies leitet den lokalen Port 8080 auf deinem Computer auf Port 80 auf dem Zielserver weiter, was dir den Zugriff auf die Website des Servers über localhost:8080
ermöglicht.
SOCKS-Proxys
Ein SOCKS-Proxy kann verwendet werden, um den gesamten Netzwerkverkehr über eine sichere SSH-Verbindung zu leiten. Dies ist besonders nützlich, wenn du auf das Internet über ein unzuverlässiges oder zensiertes Netzwerk zugreifen musst.
Um einen SOCKS-Proxy zu verwenden, setze die SOCKS-Option in deinem SSH-Client:
ssh -D 8080 benutzername@ziel
Sobald der Proxy eingerichtet ist, kannst du ihn in deinem Webbrowser oder anderen Anwendungen konfigurieren, um den gesamten Datenverkehr über die SSH-Verbindung zu leiten.
Neue Posts
MX Linux Systemanforderungen: Alles, was du wissen musst
Systemanforderungen
Hoymiles HM-800 blinkt grün: Bedeutung und Lösungen
Problemlösungen
So ändern Sie den Download-Ordner in Opera GX: Eine Schritt-für-Schritt-Anleitung
Technologie
Alles, was Sie über den Netzwerksicherheitsschlüssel für HP Drucker wissen müssen
Drucker
Ultraxtend Wifi Anleitung: Schritt-für-Schritt zur optimalen Nutzung
Technologie
Was bedeutet es, wenn die Hoymiles DTU grün blinkt?
Energieeffizienz
Lösungen für ein langsames Roborock Netzwerk
Technologie
Fritz 450E zurücksetzen: Schritt-für-Schritt-Anleitung für alle Szenarien
Technik
Bayern-WLAN Anmeldeseite kommt nicht – Ursachen und Lösungen
WLAN-Probleme
Linux Mint XFCE Systemanforderungen: Alles, was du wissen musst
Systemanforderungen
Beliebte Posts
WLAN dBm-Tabelle: Signalstärke verstehen und Netzwerkprobleme beheben
Fehlerbehebung
FRITZ!Box 7590: So beheben Sie einen defekten WLAN-Chip
Produktbewertung
Zurücksetzen des Hoymiles DTU: Eine umfassende Anleitung
Benutzerhandbuch
Fronius Fehlercode-Liste: Bedeutung und Problemlösungen für Fronius-Wechselrichter
Instandhaltung
WhatsApp für Linux: Installation, Einrichtung und Nutzung
Fehlerbehebung
Linux auf dem Mac installieren: Ein Schritt-für-Schritt-Tutorial
Technische Anleitungen
Linux auf Tablets: Schritt-für-Schritt-Anleitung zum Installieren und Verwenden
Sicherheit
MX Linux herunterladen: Dein umfassender Leitfaden zur Installation
Fehlerbehebung
Windows Subsystem für Linux (WSL): Umfassender Leitfaden zur Einrichtung und Verwendung
Fehlerbehebung und häufige Probleme
Hoymiles HM-800: Schritt-für-Schritt-Anleitung zur WLAN-Verbindung
Fehlerbehebung