Hilfreiche Ratschläge

Wie benutzt man SSH? Sowie Installation und Konfiguration (Linux, Windows, macOS, Android, iOS)

Pin
Send
Share
Send
Send


Eine kostenlose Implementierung des SSH-Protokolls namens OpenSSH wurde bereits 1999 von OpenBSD-Entwicklern veröffentlicht. Und heute ist es der De-facto-Standard für die sichere und bequeme Verbindung zu einer Remote-Konsole. Nach siebzehnjähriger Entwicklungszeit verfügt OpenSSH über eine Vielzahl von Funktionen, Einstellungen und Betriebsmodi, die nicht allen Benutzern bekannt sind.

Dieser Artikel ist eine Sammlung von Schnellrezepten, die Sie sich merken oder als Spickzettel verwenden können. Befehle werden für Linux gegeben, aber die meisten funktionieren in jedem anderen Betriebssystem, für das es eine OpenSSH-Assembly gibt. Der entfernte Benutzer und der entfernte Host werden im Text immer als user @ host und auch einzeln angegeben. Viel Spaß beim Lesen.

6. Arbeiten Sie mit Remote-Dateien mithilfe des lokalen Dateimanagers

Es ist nicht immer praktisch, mit einer großen Anzahl von Dateien mithilfe von Konsolenbefehlen oder mc zu arbeiten, die auf einem Remotecomputer ausgeführt werden. Sie können jedoch jederzeit ein beliebiges Verzeichnis auf dem Remotecomputer als Netzlaufwerk verbinden. Dazu installieren Sie einfach sshfs:

Erstellen Sie ein Verzeichnis zum Verbinden eines „Netzlaufwerks“:

Und verbinden Sie es:

Nun alle Dateien im entfernten Verzeichnis / home / user wird im Verzeichnis sichtbar sein

/ remote_files / und du kannst mit ihnen arbeiten wie mit gewöhnlichen.

7. Verwenden Sie tmux

Komplexe Aktionen auf einem Remotecomputer sind selten auf eine Konsole beschränkt. Normalerweise öffnen wir mehrere SSH-Verbindungen gleichzeitig, in denen wir verschiedene Befehle ausführen, Text von einer zur anderen kopieren und gleichzeitig mehrere Vorgänge überwachen. Es ist jedoch nicht erforderlich, mehrere Sitzungen offen zu halten. Es reicht nur eine Sitzung aus, in der tmux ausgeführt wird.

Das Dienstprogramm tmux ist ein weiterer Spross des OpenBSD-Teams. Damit können Sie eine unbegrenzte Anzahl von Konsolen in einer SSH-Sitzung ausführen, mit denen Sie gleichzeitig arbeiten können, auch gleichzeitig mit mehreren Konsolen auf demselben Bildschirm. Am wichtigsten ist jedoch, dass tmux die Funktion zum Trennen / Anhängen unterstützt, mit der Sie die Verbindung zur aktuellen tmux-Sitzung trennen, die SSH-Verbindung trennen, von einem anderen Computer aus eine Verbindung zum Computer herstellen und die tmux-Sitzung mit allen geöffneten Konsolen und deren Inhalten fortsetzen können.

Tmux split-screen

Tmux ist in den Repositories fast aller gängigen Distributionen verfügbar. Installieren Sie es und führen Sie es auf einem Remote-Computer aus. Bevor Sie es jedoch verwenden können, müssen Sie die Dokumentation (oder das Spickzettel) lesen.

SSH unter Linux installieren

In 99,99% der Fälle ist bereits ein ssh-Client unter Linux installiert, mit dem Sie eine Verbindung zu einem Remotecomputer herstellen können. Wenn Sie jedoch eine Verbindung zu dem Computer herstellen möchten, auf dem Sie sich gerade befinden, oder zu einem anderen Computer, müssen Sie "den ssh-Server herunterladen".

Dies ist sehr einfach, alles, was Sie brauchen, befindet sich bereits in den Repositories (a la program store), öffnen Sie das Terminal und geben Sie den Befehl ein:

Das heißt, es ist notwendig Serverseite, wodurch der Computer über das ssh-Protokoll im Netzwerk verfügbar wird. Gibt es Client-Teil, das bereits auf Ihrem Computer installiert ist, und mit dem Sie eine Verbindung zum Remotecomputer herstellen.

SSH-Verbindung (mit Passwort)

Öffnen Sie ein Terminal und geben Sie den Befehl ein, um eine Verbindung zum Remote-Computer herzustellen:

Zuerst schreiben wir ssh, dann den Benutzernamen, der sich auf dem entfernten Rechner befindet, dann das @ -Zeichen (Hund) und die IP-Adresse. Hier ist ein Beispiel:

In der Regel wird eine SSH-Verbindung an Port 22 hergestellt. Wenn Sie eine Änderung erzwingen, müssen Sie diese angeben. Dazu schreiben Sie -p number am Ende. Hier ist ein Beispiel:

Nachdem Sie eine Verbindung hergestellt haben und dies die erste Verbindung zum Computer war, müssen Sie den Computer zu den vertrauenswürdigen hinzufügen. Geben Sie yes ein und drücken Sie die Eingabetaste. Dies wird einmal gemacht.

Als nächstes müssen Sie das Benutzerpasswort schreiben. Es muss jedes Mal angegeben werden!

Wie erstelle ich einen SSH-Schlüssel?

Auf dem Computer, für den Sie gerade einen Schlüssel erstellen, müssen Sie diesen anschließend auf unseren Server kopieren!

Erstellen Sie einen Schlüssel für den aktuellen Computer:

Danach wird eine Frage gestellt, wo der Schlüssel gespeichert werden soll. Standardmäßig ist dies Ihr Ausgangsverzeichnis, ein versteckter Ordner ./ssh . In den meisten Fällen können Sie einfach die Eingabetaste drücken, um zu überspringen.

Als nächstes werden Sie aufgefordert, ein Codewort zu erstellen. Drücken Sie die Eingabetaste, um zu überspringen.

Der Schlüssel wurde erstellt und muss nun zum Remote-Computer oder Server hinzugefügt werden.

Wie füge ich einem Server einen SSH-Schlüssel hinzu?

Geben Sie dazu den folgenden Befehl ein:

Wir schreiben den Befehl ssh-copy-id, dann den Namen des Benutzers, der auf der entfernten Maschine existiert, das @ -Symbol (Hund) und die IP-Adresse. Hier ist ein Beispiel:

Geben Sie als Nächstes das Kennwort für den Benutzer an, der sich auf dem Remotecomputer oder -server befindet. Anschließend wird der Schlüssel kopiert.

Jetzt haben Sie die Möglichkeit, sich ohne Schlüssel mit einem Server oder einem anderen Computer zu verbinden, indem Sie einfach einen Benutzernamen und ein Passwort eingeben!

Schlüsselübertragung

  1. Wir speichern unseren Linux-Server in Sitzungen wie folgt:
    • Geben Sie Benutzername @ IP-Adresse an
    • direkt unter dem Namen der Verbindung
  2. Stellen Sie eine Verbindung zum Server her
  3. Gehe in das Verzeichnis ./ssh:
  4. Öffnen Sie anschließend mit dem Nano-Editor das Dokument "authorized_keys" zur Bearbeitung

Fügen Sie den zuvor generierten Schlüssel zu dieser Datei hinzu und speichern Sie die Daten

  • Schließen Sie Putty SSH
  • Öffnen Sie Putty und klicken Sie auf die Schaltfläche "Laden"
  • Geben Sie als Nächstes in den Einstellungen für SSH -> Auth den Pfad zur Schlüsseldatei .ppk an
  • Klicken Sie auf Öffnen, und die Sitzung wird auf dem Server ohne Verwendung des Schlüssels gestartet!
  • Lokale Portweiterleitung: Zugriff auf Remote-Ressourcen auf dem lokalen System

    Mit der Option "Lokale Portweiterleitung" können Sie auf Ressourcen zugreifen, die sich im lokalen Netzwerk befinden. Angenommen, Sie müssen zu Hause auf den Office-Datenbankserver zugreifen. Aus Sicherheitsgründen ist dieser Server so konfiguriert, dass nur Verbindungen von PCs im lokalen Netzwerk des Büros akzeptiert werden. Wenn Sie jedoch Zugriff auf einen SSH-Server im Büro haben und dieser SSH-Server Verbindungen von außerhalb des Büronetzwerks zulässt, können Sie eine Verbindung von zu Hause aus herstellen. Dann greifen Sie auf die Datenbank zu. Es ist einfacher, einen SSH-Server vor Angriffen zu schützen, als jede LAN-Ressource einzeln zu schützen.

    Dazu stellen Sie eine SSH-Verbindung zum SSH-Server her und weisen den Client an, den Datenverkehr vom angegebenen Port zum lokalen PC zu übertragen. Zum Beispiel von Port 1234 zu der Adresse des Datenbankservers und seinem Port innerhalb des Büronetzwerks. Wenn Sie versuchen, über Port 1234 auf Ihrem PC („localhost“) auf die Datenbank zuzugreifen, wird der Datenverkehr automatisch über die SSH-Verbindung „getunnelt“ und an den Datenbankserver gesendet.

    Der SSH-Server fungiert als Vermittler und leitet den Datenverkehr hin und her. In diesem Fall können Sie jedes Befehlszeilen- oder Grafiktool verwenden, um auf die Datenbank zuzugreifen, wie Sie es normalerweise auf einem lokalen PC tun.

    Um die lokale Umleitung zu verwenden, stellen Sie mit dem Zusatzargument -L eine Verbindung zum SSH-Server her. Die Syntax für das Verkehrstunneln lautet wie folgt:

    Angenommen, der Büroserver befindet sich unter 192.168.1.111. Sie haben über ssh.youroffice.com Zugriff auf den SSH-Server und Ihr Kontoname auf dem SSH-Server lautet bob. In diesem Fall sieht der erforderliche Befehl folgendermaßen aus:

    Wenn Sie diesen Befehl ausführen, werden Sie über Port 8888 auf localhost zum Office-Datenbankserver weitergeleitet. Wenn das DBMS über eine Webschnittstelle verfügt, können Sie http: // localhost: 8888 in die Adressleiste des Browsers eingeben. Wenn Sie ein Befehlszeilentool haben, das eine Datenbank-Netzwerkadresse benötigt, leiten Sie diese an localhost: 8888 weiter. Der gesamte auf dem PC an Port 8888 gesendete Datenverkehr wird innerhalb des Büronetzwerks an 192.168.1.111:1234 umgeleitet:

    Wenn Sie versuchen, über den 8888-Port Ihres PCs eine Verbindung zur Datenbank herzustellen, wird der Datenverkehr über eine SSH-Verbindung übertragen. Wenn es das System erreicht, auf dem SSH ausgeführt wird, sendet der SSH-Server es an Port 1234 auf "localhost", der zu demselben PC gehört, auf dem der SSH-Server ausgeführt wird. Das heißt, "localhost" im obigen Befehl bedeutet "localhost" aus der Sicht eines Remote-Servers:

    Wenn Sie beispielsweise wie oben beschrieben einen SSH-Tunnel konfigurieren müssen, geben Sie 8888 als Quellport und localhost: 1234 als Zieladresse ein. Klicken Sie danach auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Vor dem Herstellen einer Verbindung zum SSH-Tunnel müssen Sie die Adresse und den Port des SSH-Servers selbst im Abschnitt "Sitzung" eingeben:

    Remote-Portweiterleitung: Offener Zugriff auf lokale Ressourcen auf einem Remote-System

    "Remote Port Forwarding" ist das Gegenteil von "Local Forwarding" und wird nicht so oft verwendet. Sie können über einen SSH-Server auf Ressourcen auf einem lokalen PC zugreifen. Angenommen, auf dem lokalen PC ist ein Webserver konfiguriert. Ihr PC ist jedoch durch eine Firewall geschützt, die eingehenden Datenverkehr zum Server nicht zulässt.

    Wenn Sie Zugriff auf einen Remote-SSH-Server haben, können Sie eine Verbindung zu diesem SSH-Server herstellen und die Remote-Port-Weiterleitung verwenden. Ihr SSH-Client weist den Server an, den Datenverkehr von einem bestimmten Port (z. B. 1234) auf dem SSH-Server an die angegebene Adresse und den angegebenen Port auf Ihrem PC oder innerhalb des lokalen Netzwerks umzuleiten. Wenn jemand eine Verbindung zu Port 1234 auf einem SSH-Server herstellt, wird dieser Datenverkehr automatisch über die SSH-Verbindung "getunnelt". Jeder, der eine Verbindung zum SSH-Server herstellt, kann auf den Server zugreifen, der auf Ihrem PC ausgeführt wird. Dies ist eine ziemlich effektive Methode, um Firewalls zu umgehen.

    Um Remote-IP-Tunneling zu verwenden, verwenden Sie den Befehl ssh mit dem Argument - R. Die Syntax hier ist so ziemlich die gleiche wie bei der lokalen Umleitung:

    Angenommen, Sie möchten eine Serveranwendung erstellen, die Port 1234 auf Ihrem PC überwacht. Es ist über Port 8888 auf dem Remote-SSH-Server verfügbar. Die SSH-Serveradresse lautet ssh.youroffice.com, und Ihr Benutzername auf dem SSH-Server lautet bob. Der Befehl lautet also wie folgt:

    Dann kann sich jemand über Port 8888 mit dem SSH-Server verbinden. Diese Verbindung wird zu der Serveranwendung getunnelt, die auf Port 1234 des PCs ausgeführt wird, von dem aus Sie eine Verbindung hergestellt haben:

    Wenn Sie beispielsweise wie oben beschrieben einen SSH-Tunnel konfigurieren möchten, geben Sie 8888 als Quellport und localhost: 1234 als Zieladresse an. Klicken Sie danach auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Vor dem Herstellen der Verbindung müssen Sie die Adresse und den Port des SSH-Servers selbst im Abschnitt "Sitzung" eingeben.

    Danach können Benutzer eine Verbindung zu Port 8888 auf dem SSH-Server herstellen und ihr Datenverkehr wird zu Port 1234 auf Ihrem lokalen System übertragen:

    Sie müssen die Option „GatewayPorts“ in sshd_config auf dem Remote-SSH-Server aktivieren, wenn Sie diese Einstellungen ändern möchten.

    Dynamische Portweiterleitung: Verwenden eines SSH-Servers als Proxy

    Es gibt auch eine "dynamische Portweiterleitung", die nach dem gleichen Prinzip wie ein Proxy- oder VPN-Server funktioniert. Der SSH-Client erstellt einen SOCKS-Proxy, der für Ihre eigenen Anwendungen konfiguriert werden kann. Der gesamte Datenverkehr, der über den Proxy gesendet wird, wird über den SSH-Server gesendet. Das Prinzip ist ähnlich wie bei der lokalen Umleitung: Der lokale Datenverkehr wird an einen bestimmten Port Ihres PCs gesendet und über eine SSH-Verbindung an eine Remoteadresse umgeleitet.

    Angenommen, Sie verwenden ein öffentliches Wi-Fi-Netzwerk. Aber ich will es sicher machen. Wenn Sie von zu Hause aus Zugriff auf den SSH-Server haben, können Sie eine Verbindung herstellen und die dynamische Umleitung verwenden. Der SSH-Client erstellt einen SOCKS-Proxy auf Ihrem PC. Der gesamte an diesen Proxy gesendete Datenverkehr wird über eine Verbindung zum SSH-Server gesendet. Keiner der Benutzer eines öffentlichen Wi-Fi-Netzwerks kann Ihre Bewegungen im Netzwerk verfolgen oder den Zugriff auf Websites blockieren. Aus der Perspektive der von Ihnen besuchten Websites scheint es, als würden Sie von Ihrem Heim-PC aus auf sie zugreifen.

    Oder Sie müssen möglicherweise eine Verbindung zu einem Medienserver in Ihrem Heimnetzwerk herstellen. Aus Sicherheitsgründen ist nur Ihr SSH-Server mit dem Internet verbunden. Sie dürfen jedoch keine Verbindung zum Medienserver über das Internet herstellen. In diesem Fall können Sie die dynamische Portweiterleitung aktivieren, den SOCKS-Proxy im Browser konfigurieren und dann über den Browser eine Verbindung zu den Servern im Heimnetzwerk herstellen, als ob Sie zu Hause wären.

    Wenn sich der Medienserver beispielsweise in Ihrem Heimnetzwerk unter 192.168.1.123 befindet, können Sie die Adresse 192.168.1.123 zu jeder Anwendung hinzufügen, die den SOCKS-Proxy verwendet, und auf den Medienserver zugreifen, als befänden Sie sich im Heimnetzwerk.

    Um die dynamische Umleitung zu verwenden, führen Sie den Befehl ssh mit dem Argument - D aus:

    Angenommen, Sie haben Zugriff auf einen SSH-Server unter ssh.yourhome.com und Ihr Benutzername auf einem SSH-Server lautet bob. Sie müssen die dynamische Umleitung verwenden, um den SOCKS-Proxy auf Port 8888 des aktuellen PCs zu öffnen. Dann sieht der Befehl für das SSH-Tunneln folgendermaßen aus:

    Danach können Sie Ihren Browser oder eine andere Anwendung so konfigurieren, dass die lokale IP-Adresse (127.0.0.1) und der Port 8888 verwendet werden. Der gesamte Verkehr von dieser Anwendung wird durch den Tunnel umgeleitet:

    Wenn Sie beispielsweise einen SOCKS-Proxy auf Port 8888 konfigurieren müssen, geben Sie 8888 als Quellport ein. Klicken Sie danach auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen.

    Danach können Sie die Anwendung so konfigurieren, dass sie über den SOCKS-Proxy auf Ihrem lokalen PC eine Verbindung herstellt (d. H. Über die IP-Adresse 127.0.0.1, die zu Ihrem lokalen PC führt), und den richtigen Anschluss für den Betrieb angeben:

    Der Tunnel bleibt aktiv und offen, solange die SSH-Verbindungssitzung geöffnet ist. Wenn Sie die SSH-Sitzung beenden und die Verbindung zum Server trennen, wird der Tunnel ebenfalls geschlossen. Um den Tunnel wieder zu öffnen, stellen Sie die Verbindung mit dem entsprechenden Befehl oder der entsprechenden Funktion in PuTTY wieder her.

    Diese Publikation ist eine Übersetzung des Artikels „Verwendung des SSH-Tunnels zum sicheren Zugriff auf eingeschränkte Server und zum Durchsuchen“, der vom freundlichen Team des Internet Technology.ru-Projekts erstellt wurde

    Was ist SSH? Kurzbeschreibung

    Das Secure Shell Protocol (SSH) wurde entwickelt, um die Sicherheit der Netzwerkkommunikation mit Remote-Hosts zu maximieren. Dieses Protokoll verschlüsselt den Netzwerkverkehr mit erweiterten Authentifizierungsfunktionen sowie Funktionen zum Schutz anderer unsicherer Protokolle wie Secure Copy (SCP), Secure File Transfer Protocol (SFTP) und X-Session-Umleitung und Portweiterleitung. Verschiedene Verschlüsselungstypen (von 512 Bit bis 32768 Bit) werden mithilfe verschiedener kryptografischer Algorithmen unterstützt - Blowfish, Triple DES, CAST-128, Advanced Encryption Scheme (AES) und ARCFOUR. Je höher die Verschlüsselungskapazität, desto mehr Verkehr wird im Netzwerk generiert. Abbildung 1 zeigt, wie jeder Netzwerkbenutzer den Telnet-Verbindungsverkehr mithilfe eines Netzwerkpaketanalysators (z. B. Wireshark) auf einfache Weise anzeigen kann.

    Häufig verwendete Abkürzungen
    • API: Anwendungsprogrammierschnittstelle
    • FTP: File Transfer Protocol - Dateiübertragungsprotokoll
    • IETF: Internet Engineering Task Force - Gruppe für Internettechnik
    • Posix: Portable Operating System Interface für UNIX - Portable Operating System Interface für UNIX
    • RFC: Request for Comments - RFC-Dokument, Anforderung eines Kommentars
    • VPN: Virtuelles privates Netzwerk - Virtuelles privates Netzwerk

    Wenn Sie ein ungeschütztes "offenes" Protokoll verwenden (z. B. Telnet), kann jeder Netzwerkbenutzer Ihre Passwörter und andere vertrauliche Informationen ausspionieren. Abbildung 1 zeigt das Benutzerverbindungsdiagramm. fsmythe zu einem Remote-Host über Telnet. Benutzer gibt ihren Namen ein fsmythe und Passwort r @ m $ 20! 0dass jeder Benutzer im selben Netzwerk wie unser ahnungsloser Telnet-Benutzer sehen kann.

    Abbildung 2. Verbindungen mit dem SSH-Protokoll werden verschlüsselt

    In Abbildung 2 ist ein typisches SSH-Verbindungsdiagramm dargestellt. Es ist zu sehen, dass kein Netzwerkbenutzer den verschlüsselten Datenverkehr anzeigen kann. SSH-Pakete (normalerweise das OpenSSH Open Source Package) werden standardmäßig auf allen gängigen Linux®- und UNIX®-Distributionen installiert, sodass Sie sie wahrscheinlich nicht aus dem Quellcode herunterladen und kompilieren müssen. Wenn Sie nicht mit Linux oder UNIX arbeiten, gibt es viele unterstützte kostenlose SSH-Tools wie WinSCP, Putty, FileZilla, TTSSH und Cygwin (POSIX-Software unter Windows®). Diese Tools führen das Windows-Betriebssystem aus und verfügen über eine UNIX- oder Linux-Shell-Oberfläche.

    Unabhängig davon, welches Betriebssystem Sie verwenden, bietet SSH viele Vorteile für den alltäglichen Computergebrauch. Dieses Protokoll ist nicht nur zuverlässig, sicher und flexibel, sondern auch einfach zu installieren, zu konfigurieren und zu verwenden, ganz zu schweigen von seinen zahlreichen Funktionen.

    SSH-Architektur

    Die folgende SSH-Definition ist in IETF RFC 4251-4256 enthalten: "SSH wird verwendet, um sich sicher bei einem Remotesystem anzumelden und andere sichere Dienste über nicht sichere Netzwerke zu organisieren." Das Protokoll enthält drei Hauptkomponenten (Abbildung 3):

    • Transportschicht-Protokoll: Bietet Serverauthentifizierung, Datenschutz und Integrität. Dieses Protokoll kann auch Informationskomprimierung bereitstellen und verwendet hauptsächlich TCP / IP-Verbindungen, kann jedoch auf der Basis anderer Datenströme mit garantierter Zustellung implementiert werden.
    • Benutzerauthentifizierungsprotokoll: Wird auf Servern zur Authentifizierung von Clients verwendet und basiert auf dem Transportschichtprotokoll.
    • Verbindungsprotokoll: Bietet Multiplexing des verschlüsselten Tunnels in mehrere logische Kanäle und arbeitet über dem Benutzerauthentifizierungsprotokoll.

    Abbildung 3. Logische Schichten des SSH-Protokolls

    Транспортный уровень отвечает за обмен ключами и аутентификацию серверов. На этом уровне обеспечивается поддержка шифрования, проверки целостности и сжатия данных (при необходимости), после чего на верхний уровень передается API-интерфейс для отправки и получения нешифрованных текстовых пакетов. Уровень аутентификации пользователей обеспечивает проверку подлинности клиентов при помощи различных методов. Наиболее распространенные методы аутентификации включают в себя использование паролей и открытых ключей, ввод данных с клавиатуры, интерфейс GSSAPI, технологию SecureID, а также различные подключаемые модули аутентификации (PAM).

    На уровне соединений определяются каналы, глобальные запросы, а также запросы на предоставление каналов, через которые предоставляются службы SSH. Одно SSH-соединение может одновременно включать в себя несколько каналов, в каждом из которых происходит двунаправленная передача данных. Kanalanforderungen verwenden Informationen wie den serverseitigen Prozessbeendigungscode. Der SSH-Client initiiert eine Anforderung zur Weiterleitung an einen Port auf der Serverseite.

    Diese offene Architektur ist sehr flexibel. Die Transportschicht ist mit TLS (Transport Layer Security) kompatibel, und Sie können Ihre eigenen Authentifizierungsmethoden implementieren, um die Ebene der Benutzerauthentifizierung zu erweitern. Auf der Verbindungsebene können Sie mehrere Sitzungen in einer SSH-Verbindung kombinieren (Abbildung 4).

    Beispiele für die typische Verwendung von SSH unter UNIX- und Linux-Betriebssystemen

    In der Regel wird SSH verwendet, damit Benutzer eine Verbindung zu Remotecomputern herstellen und verschiedene Befehle auf diesen ausführen können. SSH unterstützt jedoch auch Tunnel- und X11-Verbindungen und ermöglicht sogar Dateiübertragungen mit SFTP und SCP. SSH kann in einer Vielzahl von Anwendungen für verschiedene Plattformen verwendet werden, einschließlich Linux, UNIX, Windows und Apple® OS X (für einige Anwendungen sind möglicherweise zusätzliche Funktionen erforderlich, die nur für bestimmte SSH-Clients oder SSH-Server verfügbar oder kompatibel sind).

    Betrachten Sie einige allgemeine Beispiele für die SSH-Syntax:

    • Zugriff auf die Befehls-Shell eines Remote-Computers (anstatt unsichere Telnet- und Rlogin-Protokolle zu verwenden):
    • Ausführen eines separaten Befehls auf einem Remotecomputer (anstatt rsh zu verwenden)
    • Kopieren von Dateien vom lokalen Server auf den Remotecomputer mit dem SCP-Befehl:
    • Sichere Dateiübertragung per SFTP (anstelle von FTP):
    • Effizientes und sicheres Sichern, Synchronisieren und Spiegeln von Dateien auf einem lokalen oder Remote-Computer mit rsync:
    • Portweiterleitung oder Tunneling (nicht mit VPN verwechseln):
    • Umleiten von X-Sitzungen von einem Remotecomputer (kann über mehrere Zwischenknoten erfolgen):
    • Eine X11-Umleitungskonfiguration, die in Verbindung mit einem X Windows-Client verwendet wird, der mit X11-SSH-Tunnel konfiguriert ist. Auf diese Weise können Sie das UNIX- oder Linux-Grafiksubsystem über eine sichere SSH-Verbindung auf einem lokalen Windows-Computer verwenden, der über SSH mit einem entfernten Linux- oder UNIX-Host verbunden ist:
    • Sicheres Mounten des Remote-Serververzeichnisses als Dateisystem des lokalen Computers mithilfe von sshfs:
    • Automatisierte Überwachung und Verwaltung von Remoteservern mit verschiedenen Mitteln:

    Nützliche Tipps zum Einrichten und Verwenden von SSH

    In einigen Fällen, die oben erörtert wurden, haben viele erfahrene Systemadministratoren Bedenken hinsichtlich der sicheren Implementierung einer Reihe von Funktionen und Methoden zur Verwendung von SSH. Trotz der großen Menge an Materialien und Artikeln, die verschiedenen Ansätzen zur SSH-Sicherheit und zum Schutz von Remotecomputern im Allgemeinen gewidmet sind, werden hier verschiedene Befehle und Konfigurationen vorgestellt, mit denen der Schutz des Remotezugriffs mithilfe von SSH verbessert werden kann:

    • Verweigern Sie Remoteverbindungen zu Benutzern mit Root-Rechten:
    • Erstellen Sie Schlüsselpaare (öffentlich / privat) mit sicheren Passphrasen und schützen Sie den privaten Schlüssel mit einem Passwort (generieren Sie niemals Schlüsselpaare oder Passphrasen ohne Passwörter):
    • Konfigurieren Sie TCP-Handler (TCP-Wrapper) so, dass nur bestimmte Remotecomputer eine Verbindung herstellen und alle anderen verbieten können:
    • Deaktivieren Sie die Funktionalität des SSH-Servers auf Arbeitsstationen und Laptops. Deaktivieren Sie dazu den SSH-Dienst und entfernen Sie das SSH-Serverpaket:
    • Verwalten von SSH-Verbindungsberechtigungen mithilfe von Konten:
    • Verwenden Sie nur das SSH-Protokoll Version 2:
    • Schließen Sie inaktive Verbindungen, indem Sie Ausfallzeiten angeben:
    • Hostbasierte Authentifizierung nicht zulassen:
    • Deaktivieren Sie benutzerdefinierte .rhosts-Dateien:
    • Konfigurieren Sie die Firewall so, dass eingehende SSH-Verbindungen nur von vertrauenswürdigen Netzwerken zugelassen werden:
    • Geben Sie explizit die Netzwerkschnittstellen an, die eingehende SSH-Verbindungen akzeptieren sollen:
    • Konfigurieren Sie Benutzerrichtlinien für die Verwendung sicherer Kennwörter, die mit vollständiger Aufzählung, Social Engineering und Dictionary Matching Schutz vor Angriffen bieten:
    • Beschränken Sie den Zugriff von SFTP-Benutzern auf ihre Basisverzeichnisse mithilfe des Parameters Chroot SSHD:
    • Verbieten Sie die Verwendung von leeren Passwörtern:
    • Begrenzen Sie die Anzahl der eingehenden Verbindungen an Port 2022 in einem bestimmten Zeitintervall:
    • Konfigurieren Sie iptables so, dass nicht mehr als drei Versuche innerhalb von 30 Sekunden möglich sind, eine Verbindung zu Port 2022 herzustellen:
    • Verwenden Sie einen Protokolldateianalysator (z. B. logcheck, loggrep, splunk oder logwatch) für eine gründlichere Analyse und Berichterstellung. Konfigurieren Sie auch die SSH-Anwendung selbst für eine detailliertere Ereignisprotokollierung:
    • Legen Sie die detaillierteste SSH-Protokollierungsstufe fest:
    • Aktualisieren Sie SSH-Pakete und erforderliche Bibliotheken immer auf die neuesten Versionen:
    • Blenden Sie die Version von OpenSSH im Quellcode aus und kompilieren Sie die Anwendung erneut. Nehmen Sie danach die folgenden Änderungen vor:
    • Entfernen Sie die ausführbaren Dateien rlogin und rsh vom System und ersetzen Sie sie durch symlink SSH-Links:

    SSH unterstützt eine Vielzahl von Authentifizierungsmethoden und Methoden, die aktiviert und deaktiviert werden können. Dies kann in der Konfigurationsdatei / etc / ssh / sshd_config verwaltet werden, indem ein Schlüsselwort für eine bestimmte Authentifizierungsmethode gefolgt von einem Ja- oder Nein-Parameter angegeben wird. Das folgende Beispiel zeigt die gebräuchlichsten Optionen:

    Die Schlüsselwörter AllowedAuthentications und RequiredAuthentications in der Datei sshd_config legen fest, welche Authentifizierungskonfigurationen und -methoden nur mit SSH Version 2 verwendet werden. Die Syntax für die Authentifizierung mit Kennwörtern und öffentlichen Schlüsseln lautet wie folgt:

    Öffentliche und private SSH-Schlüssel

    Unterstützende SSH-Authentifizierungstools sind Schlüsselverwaltungstools und zugehörige Agents. Wenn die Authentifizierung mit öffentlichem Schlüssel konfiguriert ist, wird Ihr Schlüssel beim Remote-SSH-Host authentifiziert. Die SSH-basierte Identität wird anhand zweier Komponenten ermittelt: öffentlicher und privater Schlüssel. Der private SSH-Schlüssel authentifiziert den Benutzer mit einer ausgehenden SSH-Verbindung und muss geheim gehalten werden. Wenn ein Benutzer eine SSH- oder SCP-Verbindung zu einem Remotecomputer oder -server herstellt, ist dies der Fall SSH-Client. Mit mathematischen Algorithmen wird Ihr privater Schlüssel zu Ihrer persönlichen elektronischen Zugangskarte, und der öffentliche Schlüssel wird zum Schloss, für das Ihre elektronische Karte geeignet ist. Ihr privater Schlüssel lautet: "Ich bin es wirklich, Fred Smith." Der öffentliche Schlüssel lautet: "Ja, Sie sind wirklich Fred Smith. Ihre Identität ist hergestellt. Bitte melden Sie sich an."

    Der öffentliche Schlüssel bestimmt, wer das Schloss öffnen und das Zugangsrecht erhalten darf. Öffentliche Schlüssel müssen nicht geheim gehalten werden, da sie nicht zur Beeinträchtigung des Systems oder für den unbefugten Zugriff verwendet werden können. Auf Linux- und UNIX-Betriebssystemen werden öffentliche und private Schlüssel als ASCII-Textdateien gespeichert, auf Windows-basierten Systemen können Schlüsselpaare sowohl in Textdateien als auch in der Windows-Registrierung gespeichert werden.

    SSH Version 2 ermöglicht die mehrfache Authentifizierung mit mehreren privaten Schlüsseln. Sehen wir uns an, wie Sie ein Paar öffentlicher und privater SSH-Schlüssel auf normalen Linux-Computern erstellen und konfigurieren (Abbildung 5).

    Listing 2. Kopieren des öffentlichen Schlüssels vom Quellcomputer in die Datei authorized_keys auf dem Zielcomputer

    In Listing 3 wird der erste Remote-SSH-Aufruf (mit dem Befehl ls -d / tmp) an den Server gesendet, sodass der Schlüssel auf dem Server in der Datei .ssh / known_hosts zwischengespeichert wird. Der Benutzer gibt die Passphrase ein, die bei der Generierung der SSH-Schlüssel festgelegt wurde, und die Ausgabe des Befehls, der auf dem Remote-Server ausgeführt wird, wird an den Bildschirm des lokalen Computers übertragen.

    Listing 3. Überprüfen des SSH-Zugriffs durch Ausführen eines Befehls auf einem Remotecomputer

    Hinweis In allen obigen Beispielen musste fsmythe kein Kennwort eingeben. Stattdessen musste die in Schritt 1 angegebene Passphrase eingegeben werden. Wenn Sie die Passphrase bei der Verbindung mit dem Remotecomputer nicht eingeben möchten, erstellen Sie eine leere Phrase, indem Sie die Eingabetaste drücken, sobald die entsprechende Aufforderung angezeigt wird. Wenn Sie sich dann im Namen des Benutzers fsmythe mit dem Remote-Computer thor01.com verbinden, müssen Sie nichts mehr eingeben.

    Konfigurieren und Verwenden des Dienstprogramms ssh-agent

    Für diejenigen, die die Verwendung von kennwortlosen SSH-Schlüsseln kategorisch nicht erkennen, ist das Dienstprogramm ssh-agent hilfreich. Im Allgemeinen können Sie mit dem Dienstprogramm ssh-agent im Rahmen der aktuellen Benutzersitzung vorübergehend einen passwortlosen SSH-Zugriff bereitstellen, auch wenn ein Paar SSH-Schlüssel eine Passphrase enthält. Geben Sie die Passphrase wie gewohnt ein, bevor Sie das Dienstprogramm ssh-agent verwenden:

    Verwenden Sie anschließend ssh-agent, um Bash-Interpreter-Befehle auf dem stdout-Gerät zu generieren:

    Legen Sie im dritten Schritt die Werte der obigen Umgebungsvariablen für die aktuelle Shell-Sitzung fest:

    Stellen Sie sicher, dass das Dienstprogramm ssh-agent ausgeführt wird:

    Ruft die Liste der aktuellen Elemente ab, die in ssh-agent geladen sind:

    Fügen Sie im nächsten Schritt die erforderlichen SSH-Elemente hinzu (authentifizieren Sie sie vorab mit der Passphrase von SSH-Schlüsseln):

    Stellen Sie sicher, dass die angegebenen Elemente in die laufende ssh-agent-Shell geladen wurden:

    Schließlich können Sie die Funktion von ssh-agent mithilfe der SSH-Syntax überprüfen. Bitte beachten Sie, dass keine Aufforderung zur Eingabe einer Passphrase vorliegt:

    Wenn Sie eine Passphrase mit dem Befehl ssh-add eingeben, entschlüsseln Sie den privaten Schlüssel und geben ihn über den Agenten in den Speicher ein. Anschließend kann er mit dieser Passphrase für nachfolgende SSH-Verbindungen verwendet werden. Beachten Sie, dass Sie mit ssh-add mehrere private Schlüssel vorauthentifizieren können.

    Mit dem SSH-Dienstprogramm ssh-keyscan in Listing 4 können Sie öffentliche SSH-Hostschlüssel von Remotecomputern sammeln. Dieses extrem schnelle und effiziente Dienstprogramm ist nützlich, wenn Sie Dateien mit / etc / ssh_known_hosts füllen. Es ist hauptsächlich für die Verwendung in Befehlsskripten vorgesehen, die zur Automatisierung von Prozessen beitragen.

    Verwenden von SSH in UNIX-Anwendungen und -Skripten

    Der SSH-Zugriff über Remotebefehlsskripte und Remoteverwaltungs-Tools (Systemwartung, Remotesicherung und -archivierung) ist äußerst bequem. Dieses Problem war jedoch immer Gegenstand heftiger Debatten im Hinblick auf die Serversicherheit. Viele Befehlsskripte, die von Benutzern ausgeführt werden können, zum Beispiel:

    SSH-Passwortphrasen, die von Benutzern eingegeben wurden, können nicht verarbeitet werden und funktionieren nicht mehr, wenn eine kennwortlose Konfiguration von SSH-Schlüsseln, eine Konfiguration mit ssh-agent oder ein vertrauenswürdiger Netzwerkmechanismus nicht im Voraus konfiguriert wurden. Dies ist eine der Methoden, bei denen keine SSH-Passwörter eingegeben werden müssen. Dies liegt daran, dass SSH auf die Eingabe einer Passphrase vom Terminal wartet, das der aktuellen Shell-Sitzung zugeordnet ist. Dieses Problem kann umgangen werden, indem mit expect geschriebene Skripte oder Perl-Skripte verwendet werden (beachten Sie die Funktionen des Net :: SSH :: Perl-CPAN-Moduls). Auf diese kann auch über Ihr eigenes Skript zugegriffen werden:

    Einige Systemadministratoren betrachten es als Grund für das Lynchen, normalen Benutzern einen kennwortlosen SSH-Zugriff auf Remote-Hosts zu gewähren. Es gibt jedoch alternative Sicherheitsmaßnahmen, die einen kennwortlosen SSH-Zugriff auf Remote-Hosts rechtfertigen, z. B. wenn ein Benutzer eine eingeschränkte Kern-Shell (rksh - restricted korn shell) oder eine Shell (rssh - restricted shell) anstelle eines voll ausgestatteten Bash auf dem Remote-Computer verwendet. Mit autorisierten Schlüsseln können Sie auch die Liste der Befehle einschränken, die Benutzer auf einem Remotecomputer ausführen dürfen, sodass Benutzer nicht versehentlich einen Befehl ausführen können, der das System beschädigen könnte. Ein Beispiel für eine solche Einschränkung ist in Listing 5 dargestellt.

    Erstellen einer vertrauenswürdigen Hostumgebung mit SSH

    Abschließend sollte die vertrauenswürdige Host-Umgebung erwähnt werden, die die Verwendung von öffentlichen und privaten SSH-Schlüsseln ersetzt. In Umgebungen mit Befehlsskripten (oder wenn die Aufgabe darin besteht, bestimmte Prozeduren zu automatisieren), in denen Sie diese Aufruftypen verwenden müssen, hat die vertrauenswürdige Knotenumgebung bestimmte Vorteile gegenüber der Verwendung von SSH-Schlüsseln (obwohl gleichzeitig mit einer Sicherheitsverletzung Risiken verbunden sind). Die vertrauenswürdige Knotenumgebung (oder die vertrauenswürdige Knotenauthentifizierung) wird meistens mithilfe vorkonfigurierter Dateien implementiert, die Listen von Benutzern und Hosts enthalten, denen der Zugriff gewährt wird. Es gibt zwei Arten der vertrauenswürdigen Knotenauthentifizierung. Die erste, ältere und weniger sichere Methode (z. B. OpenSSH und SSH1) verwendet Open Protocol-Befehle (rsh, rcp und rlogin), überprüft zwei Dateien und legt ein Schlüsselwort in der Datei sshd_config fest:

    SSH Version 2 unterstützt diese Methode nicht. Ändern Sie stattdessen zum besseren Schutz des Netzwerks die Datei / etc / ssh / sshd_config (Sie können sowohl Hostnamen als auch IP-Adressen angeben) und konfigurieren Sie die Dateien shosts.equiv und / oder .shosts wie folgt:

    Legen Sie zum Aktivieren der vertrauenswürdigen Hostumgebung die folgenden Parameter für das SSH-Protokoll der Version 2 in der Datei / etc / ssh / sshd_config fest:

    Wenn beispielsweise die Datei /etc/shosts.equiv auf example.com wie folgt konfiguriert ist:

    Dann darf sich der Benutzer fsmythe basierend auf vertrauenswürdigen Knoten authentifizieren, wenn er mit Remoteclient.com, 192.168.100.12 und secureserver.net zusammenarbeitet. Dem Benutzer sallyh wird der Zugriff vom Computer secureserver.net und dem Benutzer james der Zugriff vom Remotecomputer hackers.org verweigert .

    Vertrauenswürdige Host- und SSH-Schlüsselauthentifizierungsmethoden sind ähnlich und liefern letztendlich das gleiche Ergebnis. Tabelle 1 vergleicht diese beiden Methoden.

    Tabelle 1. Vergleich der Authentifizierungsfunktionen basierend auf SSH-Schlüsseln und basierend auf vertrauenswürdigen Knoten
    SSH-FunktionenVertrauenswürdige SitesÖffentliche und öffentliche Schlüssel
    IP-AuthentifizierungJaJa
    Authentifizierung des HostnamensJaJa
    Verwendung anderer Funktionen des öffentlichen SchlüsselsNeinJa
    Authentifizierung über den Remote-BenutzernamenJaNein
    Verwenden von Platzhaltern in Hostnamen und IP-AdressenNeinJa
    Die Notwendigkeit, eine Passphrase zu verwenden, um Zugriff zu erhaltenNeinNein
    Fehler beim Ändern der IP-Adresse oder des HostnamensIn einigen FällenJa
    Die Notwendigkeit, Einstellungen sowohl auf dem Server als auch auf dem Client vorzunehmenNeinJa
    Möglichkeit zur Automatisierung von Aufgaben sowie in BefehlsskriptenJaJa

    Wenn Sie zu den Systemadministratoren gehören, die das Gewähren eines kennwortlosen SSH-Fernzugriffs in einer vertrauenswürdigen Hostumgebung für ein Grinsen halten, beachten Sie die folgenden Nachteile der Verwendung von SSH-Schlüsseln in remote ausführbaren Skripten:

    • Wenn sich der Hostname oder die IP-Adresse ändern, funktioniert das SSH-Schlüsselpaar nicht mehr, da sich Informationen zu bekannten Hosts im Cache befinden. In diesem Fall müssen Sie den alten Hosteintrag aus der Datei .ssh / known_hosts löschen und die aktualisierten Informationen erneut in den Cache stellen. In diesem Fall funktionieren alle Skripts, die SSH-Schlüssel verwenden, nicht mehr.
    • Die Authentifizierung mit SSH-Schlüsseln erfordert eine Konfiguration sowohl auf der Client- als auch auf der Serverseite. Jedes Mal, wenn Sie den öffentlichen Schlüssel ändern oder ein neues Schlüsselpaar generieren, müssen Sie den neuen öffentlichen Schlüssel auf alle Remotecomputer übertragen und die Datei authorized_keys aktualisieren.
    • Wenn Sie Berechtigungen für den Ordner .ssh / (sowie für öffentliche oder private Schlüsseldateien) ändern, funktioniert der kennwortlose SSH-Zugriff möglicherweise nicht mehr. Um die strikte Überprüfung der Zugriffsrechte auf Dateien und Verzeichnisse zu deaktivieren, bearbeiten Sie die Datei / etc / ssh / sshd_config und setzen Sie den Parameter StrictModes auf no.
    • Es gibt keine zentrale Möglichkeit, einen Schlüssel zu widerrufen, nachdem ein Schlüsselpaar generiert wurde, und es ist auch nicht möglich, genau zu wissen, an wen der Schlüssel übertragen wurde.

    Fazit

    SSH ist ein leistungsstarkes und sicheres Netzwerk-Tool, das weltweit für eine Vielzahl von Aufgaben eingesetzt wird. SSH ist ein sicherer Ersatz für offene Protokolle wie Telnet und das r * -Team, und es gibt eine Reihe kostenloser Client- und Server-SSH-Anwendungen, die SSH zu einem konkurrenzlosen Helfer machen. SSH wird in einer Vielzahl von Netzwerken zur Fernüberwachung, -wartung und -überwachung sowie zur Berichterstellung und Aufgabenautomatisierung mithilfe von Skripten eingesetzt. Daraus können wir schließen, dass es noch lange bei uns bleibt und sich weiterentwickelt.

    Ressourcen herunterladen

    • Dieser Inhalt ist in PDF
    • Putty SSH Client Installer für Windows (putty-0.60-installer.exe | 1,7 MB)
    • FileZilla-Installationsprogramm für Windows (FileZilla_3.3.2.1_win32-setup.exe | 4,0 MB)
    • Tera Term Installer für Windows (teraterm-4.65.exe | 7.5 MB)
    • WinSCP-Installationsprogramm (winscp427setup.exe | 2,9 MB)
    • Cygwin-Download-Programm (SoftonicDownloader11694.exe | 251KB)

    Verwandte Themen

    • Originalartikel: Erste Schritte mit SSH-Sicherheit und -Konfiguration (EN).
    • Lesen Sie das SSH-Protokoll, indem Sie den SSH-Artikel auf Wikipedia lesen.
    • Laden Sie OpenSSH herunter, ein kostenloses Toolkit, das das Vertrauen von technischen Online-Experten erworben hat.
    • Weitere Informationen zur SSH-Protokollarchitektur finden Sie in RFC 4251.
    • Erfahren Sie alle Details zu OpenSSH, indem Sie das OpenSSH-Protokoll von Girish Venkatachalam (Linux Journal, April 2007) lesen.
    • Дополнительную информацию о том, как защитить ваши серверы при помощи SSH, вы можете узнать из статьи Камерона Лэйрда (Cameron Laird) Server clinic: Connect securely with ssh (EN) (developerWorks, июль 2003 г.).
    • Прочитайте статью SSH and ssh-agent (EN), содержащую информацию и ссылки на загрузку инструментария компании Symantec.
    • Для получения дополнительной информации о рисках, связанных с использованием открытых ключей, ознакомьтесь с темой SSH public keys (EN) на Web-сайте serverfault.com.
    • В руководстве SSH tutorial for Linux (EN) Web-сайта suso.com описаны начальные шаги по работе с SSH в Linux-окружении.
    • В статье Five SSH tricks (EN) описаны пять приемов работы с SSH, о которых должен знать каждый.
    • В статье Top 20 OpenSSH Server Best Security Practices (EN) описаны 20 лучших приемов для защиты сервера.
    • Раздел AIX и UNIX портала developerWorks содержит большое количество материалов, посвященных администрированию AIX, которые помогут улучшить ваши навыки работы с UNIX.

    Sehen Sie sich das Video an: Nextcloud richtig installieren auf Ubuntu Server - So geht's! Komplette Anleitung (Juni 2020).

    Pin
    Send
    Share
    Send
    Send