Was Ist Reverse SSH Tunneling? (und Wie Es zu Benutzen)

0
392
Eny Setiyowati/Shutterstock.com

Brauchen, um SSH zu einem Linux-Rechner nicht erreichbar? Haben Sie rufen Sie an, dann Graben sich nach unten, die Verbindung, um Ihre eigenen remote-SSH-Sitzung. Wir zeigen Ihnen, wie.

Wenn Sie Möchten, um die Verwendung von Reverse-SSH-Tunneling

Manchmal, remote-Computer kann schwierig sein, zu erreichen. Der Seite Sie befinden sich auf kann haben eine strenge firewall-Regeln in Ort, oder vielleicht die lokalen admin einrichten, Komplexes Netzwerk Address Translation Regeln. Wie erreichen Sie so einen computer, wenn Sie benötigen, um eine Verbindung herzustellen?

Wir richten Sie einige Etiketten. Ihrem computer der lokale computer ist, weil es in der Nähe. Der computer, den Sie verbinden wollen, ist die remote-computer, weil es in einer anderen Lage als Sie.

Zu unterscheiden zwischen dem lokalen und dem remote-Computer verwendet in diesem Artikel, der remote-computer wird als “howtogeek” und ist unter Ubuntu Linux (mit lila-terminal von windows). Der lokale computer wird als “Sulaco” und läuft Manjaro Linux (mit gelb-terminal von windows).

Normalerweise würde man das Feuer bis eine SSH-Verbindung von dem lokalen computer und eine Verbindung zu dem remote-computer. Das ist keine option, in der Netzwerk-Szenario, das wir sind, zu beschreiben. Es ist wirklich egal, was die spezifische Netzwerk-Problem ist—dies ist immer dann nützlich, wenn Sie SSH nicht direkt zu einem remote-computer.

Aber wenn die Netzwerk-Konfiguration auf Ihrem Ende ist einfach der remote-computer eine Verbindung herstellen können Sie. Das allein ist nicht ausreichend für Ihre Bedürfnisse, aber, weil es nicht bieten Ihnen mit einer Kommandozeilen-Sitzung auf dem remote-computer. Aber es ist ein Anfang. Sie haben eine Verbindung zwischen den beiden Computern.

Die Antwort liegt in reverse SSH tunneling.

Was Ist Reverse SSH Tunneling?

Reverse SSH tunneling ermöglicht die Verwendung, die Verbindung auf eine neue Verbindung von Ihrem lokalen computer auf den remote-computer.

Weil die ursprüngliche Verbindung kam aus dem remote-computer, um Sie, über es zu gehen in die andere Richtung wird es mit “im Gegenteil.” Und weil SSH sicher ist, Sie setzen eine sichere Verbindung innerhalb eines vorhandenen sicheren Verbindung. Dies bedeutet, dass Ihre Verbindung zu dem remote-computer wirkt wie ein privater tunnel im inneren die ursprüngliche Verbindung.

Und so kommen wir zu dem Namen “reverse SSH tunneling.”

Wie Funktioniert Es?

Reverse SSH tunneling basiert auf dem remote-computer mit der Verbindung zu hören, für neue Verbindungsanforderungen auf dem lokalen computer.

Der remote-computer lauscht auf einem Netzwerk-port auf dem lokalen computer. Wenn es erkennt ein SSH-Anfrage an diesen port weiterleiten, die Verbindungsanforderung zurück zu sich selbst, unten auf der bestehenden Verbindung. Dies stellt eine neue Verbindung vom lokalen Rechner auf den remote-computer.

Es ist einfacher einzurichten, als es zu beschreiben.

Mit SSH Reverse Tunneling

SSH ist bereits installiert auf Ihrem Linux-computer, aber Sie müssen möglicherweise starten Sie den SSH-daemon (sshd), wenn der lokale computer hat nie akzeptiert, SSH-verbindungen vor.

sudo systemctl start sshd

Um den SSH-daemon starten, jedes mal, wenn Sie starten Sie Ihren computer, verwenden Sie diesen Befehl:

sudo systemctl enable sshd

Auf dem remote-computer, verwenden wir den folgenden Befehl aus.

  • Die Option-R (reverse) option sagt ssh, dass neue SSH-Sitzungen erstellt werden muss auf dem remote-computer.
  • Die “43022:localhost:22” sagt ssh, dass die Verbindungsanforderungen an port 43022 auf dem lokalen computer weitergeleitet werden soll an port 22 auf dem remote-computer. Port 43022 wurde gewählt, weil es aufgeführt ist, als nicht zugeordnet. Es ist keine Besondere Zahl.
  • dave@sulaco.local ist das Benutzerkonto, das der remote-computer die Verbindung auf dem lokalen computer.

ssh -R 43022:localhost:22 dave@sulaco.local

Möglicherweise erhalten Sie eine Warnung darüber, dass Sie nie mit dem lokalen computer verbunden vor. Oder sehen Sie möglicherweise eine Warnung, als die Verbindung, details werden Hinzugefügt, um die Liste der erkannten SSH-hosts. Was sehen Sie—wenn überhaupt—hängt davon ab, ob verbindungen, die jemals hergestellt wurden aus dem entfernten computer auf den lokalen computer.

Sie werden aufgefordert, das Kennwort des Kontos, das Sie verwenden, um eine Verbindung zum lokalen computer.

Beachten Sie, dass, wenn die Verbindung hergestellt wurde die Eingabeaufforderung ändert sich von dave@howtogeek dave@sulaco.

Wir sind nun verbunden mit dem lokalen computer und dem remote-computer. Das heißt, wir können die Ausgabe von Befehlen an es. Verwenden Sie die Befehl, um den Anmeldenamen auf dem lokalen computer.

wer

Wir können sehen, dass die person mit dem Benutzerkonto namens dave angemeldet hat, um den lokalen computer und dem remote-computer verbunden wurde (unter Verwendung der gleichen Benutzer-Anmeldeinformationen), die von der IP-Adresse 192.168.4.25.

RELATED: Wie Ermitteln Sie den Aktuellen Benutzer-Account in Linux

Die Verbindung zum Remote-Computer

Da die Verbindung von der remote-computer ist erfolgreich, und es für verbindungen empfangsbereit ist, können wir versuchen, eine Verbindung zu dem remote-computer aus dem lokal.

Der remote-computer lauscht auf port 43022 auf dem lokalen computer. So etwas Konter-intuitiv—, um eine Verbindung zu dem remote-computer, bitten wir ssh eine Verbindung zu dem lokalen computer, auf dem port 43022. Diese Verbindung wird Ihre Anfrage weiterleiten an den remote-computer.

ssh localhost -p 43022

Wir sind aufgefordert, die Benutzer-account-Passwort, dann mit dem remote-computer aus dem lokalen computer. Unsere Manjaro computer gerne sagt, “Welcome to Ubuntu 18.04.2 LTS”.

Beachten Sie, dass die Eingabeaufforderung hat sich von dave@sulaco zu dave@howtogeek. Wir haben unser Ziel erreicht haben, machen Sie eine SSH-Verbindung zu unserem hard-to-reach remote-computer.

Die Verwendung von SSH Mit Keys

Um es bequemer, um eine Verbindung vom remote-computer auf den lokalen computer, können wir die Einrichtung von SSH-Schlüsseln.

Auf dem remote-computer, geben Sie diesen Befehl ein:

ssh-keygen

Sie werden aufgefordert, eine passphrase. Sie können drücken Sie die EINGABETASTE, um zu ignorieren, die passphrase Fragen, aber dies wird nicht empfohlen. Es würde bedeuten, dass jeder auf dem remote-computer stellen Sie eine SSH-Verbindung zu Ihrem lokalen computer, ohne herausgefordert zu sein, ein Kennwort einzugeben.

Drei oder vier Wörter getrennt durch Symbole wird eine robuste passphrase.

Ihre SSH-Schlüssel generiert.

Wir benötigen zum übertragen des öffentlichen Schlüssels auf dem lokalen computer. Verwenden Sie diesen Befehl:

ssh-copy-id dave@sulaco.local

Sie werden aufgefordert, das Kennwort für das Benutzerkonto Sie angemeldet sind, in diesem Fall, dave@sulaco.local.

Das erste mal, wenn Sie eine Verbindungsanforderung von dem remote-computer auf den lokalen computer haben, müssen Sie die passphrase eingeben. Sie werden nicht erneut eingeben müssen für die künftigen Verbindungsanforderungen, so lange wie das terminal-Fenster bleibt offen.

RELATED: Wie zum Erstellen und Installieren von SSH-Schlüsseln Aus der Linux-Shell

Nicht Alle Tunnel Sind Beängstigend

Einige Tunnel werden können, dunklen und kurvigen, aber reverse-SSH-Tunnel ist nicht allzu schwer zu navigieren, wenn Sie halten kann die Beziehung zwischen dem remote-computer und lokalen computer direkt in Ihrem Kopf. Dann drehen Sie es.

LESEN SIE WEITER

  • › Wo Platzieren Sie Ihren Router für den Besten Wi-Fi-Geschwindigkeiten
  • › Können Herzschrittmacher (und Andere Medizinische Geräte) Wirklich Gehackt Werden?
  • › Wie aus der Ferne Öffnen einer GUI-Anwendung Mit PuTTY
  • › Was Ist Slack, und Warum Machen die Leute Lieben Es?
  • › Wie Verkaufen Sie Ihre Alten iPhone für Top-Dollar