SSH-Portweiterleitung zur Erzielung einer Intranet-Penetration

SSH-Portweiterleitung zur Erzielung einer Intranet-Penetration

Die Maschinen in unserem LAN können auf das externe Netzwerk zugreifen, aber das externe Netzwerk kann nicht auf das interne Netzwerk zugreifen. Da die Adresse des externen Netzwerks ermittelt werden kann, wenn das interne Netzwerk auf das Internet zugreift, kann das externe Netzwerk die spezifische Adresse innerhalb unseres lokalen Netzwerks nicht ermitteln. (IP-Adressen sind begrenzt) Wenn wir diese Verbindung beim Zugriff auf das externe Netzwerk offen halten, entspricht diese Verbindung dem Bau einer Straße, sodass interne Netzwerkdaten ausgehen und externe Netzwerkdaten eingehen können. SSH verwendet auch diese Methode.

Verwenden Sie den Befehl ssh, um eine Verbindung zum öffentlichen Netzwerkserver herzustellen

1. Bearbeiten Sie zunächst die SSHD-Konfigurationsdatei auf dem externen Server

vim /etc/ssh/sshd_config
#Schalten Sie den GatewayPorts-Schalter ein GatewayPorts yes
Starten Sie den SSHD-Dienst neu, damit die Änderungen wirksam werden (die Befehle können je nach Linux-Version unterschiedlich sein).
systemctl startet sshd neu 

2. Befehle

ssh -NTf -R <lokaler Host>:<lokaler Port>:<Remote-Host>:<Remote-Port> Benutzer@Host

local-host kann weggelassen werden. Beispiel: ssh -NTf -R 8888:127.0.0.1:8080 root@host

3. Parameterbeschreibung

-C aktiviert die Komprimierung von Daten
-f Im Hintergrund ausführen
-N bedeutet, dass nur eine Verbindung zum Remote-Host hergestellt wird und keine Remote-Shell geöffnet wird.
-R Port an Remote-Server binden, Reverse-Proxy
-L Port an lokalen Client binden, Proxy weiterleiten
-T Dieser Verbindung kein TTY zuweisen
-NT bedeutet, dass diese SSH-Verbindung nur zum Übertragen von Daten verwendet wird und keine Remote-Operationen durchführt

Halten Sie die SSH-Verbindung offen

Wenn wir zum Herstellen einer Verbindung mit dem Server SSH verwenden, wird die Verbindung normalerweise geschlossen, wenn über einen längeren Zeitraum keine Aktion ausgeführt wird.

Methode 1: Einrichten des Clients

1) Einstellungen auf Benutzerebene

vim ~/.ssh/config (wenn keine Konfiguration vorhanden ist, erstellen Sie eine)

2) Globale Einstellungen

/etc/ssh/ssh_config

Wählen Sie einfach einen davon aus und fügen Sie die folgenden Parameter hinzu

#Sende alle 60 Sekunden ein leeres Paket an den Server ServerAliveInterval 60
#Wenn mehr als zwei erfolglose Versuche unternommen werden, trennen Sie ServerAliveCountMax 2
#Beenden nach fehlgeschlagener Weiterleitung, um die Wiederherstellung der Verbindung zu ermöglichen ExitOnForwardFailure yes

Temporäres Schreibverfahren (empfohlen, hat keine Auswirkungen auf andere)

ssh -o ServerAliveInterval=30 root@host
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2

Methode 2: Einrichten des Servers

vim /etc/ssh/sshd_config
#Alle 30 Sekunden sendet der Server einen Heartbeat an den Client ClientAliveInterval 30
#Nach 3 Heartbeats ohne Antwort gilt der Client als getrennt ClientAliveCountMax 3

Methode 3: Verwenden eines Shell-Skripts

berühren Sie myAutoSSH.sh
Da ich die SSH-Verbindung auf RSA-Passwort-freie Authentifizierung eingestellt habe, erfordert die Logik hier kein Passwort

SSH-Anmeldemethode ohne Passwort

während(1)
Tun
  ssh -NTR <lokaler Host>:<lokaler Port>:<Remote-Host>:<Remote-Port> Benutzer@Host
Erledigt

Um sicherzustellen, dass Sie nach dem Trennen sofort eine Verbindung herstellen können, entfernen Sie den Parameter -f, da es sonst zu einer Endlosschleife kommt.

Methode 4: Autossh verwenden

Sie müssen die Autossh-Software herunterladen. Der Vorgang ist fast der gleiche wie bei direkter Verwendung von SSH

-M ist der Überwachungsport, der überwacht, ob eine Antwort auf den Befehl erfolgt, und uns hilft, die Verbindung aufrechtzuerhalten

autossh -M 5678 -NTR <lokaler Host>:<lokaler Port>:<Remote-Host>:<Remote-Port> Benutzer@Host

Ich lade nicht gern Software herunter. Es ist viel chaotische Software installiert. Ich ändere die Konfiguration auch nicht gern. Ich habe Angst, dass die Änderung die Nutzung durch andere beeinträchtigt. Deshalb verwende ich gern die temporäre Client-Konfigurationsmethode.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Drei Möglichkeiten zum Weiterleiten des Linux-SSH-Ports
  • SSH-Portweiterleitung, lokale Portweiterleitung, Remote-Portweiterleitung, dynamische Portweiterleitungsdetails
  • Detaillierte Erklärung zur SSH-Remote-Anmeldung und Portweiterleitung
  • Was ist SSH-Portweiterleitung? Was nützt das?

<<:  Detaillierte Analyse des Diff-Algorithmus in React

>>:  Anleitung zum Zurücksetzen des MySQL/MariaDB-Root-Passworts

Artikel empfehlen

Detaillierte Erläuterung des MySQL InnoDB-Sekundärindex-Sortierbeispiels

Sortierproblem Ich habe kürzlich auf Geek Time „4...

Vergleich zwischen Redis und Memcache und Auswahlmöglichkeiten

Ich verwende Redis seit Kurzem und finde es recht...

Grundlegende Kenntnisse zum MySQL UNION-Operator

MySQL UNION-Operator Dieses Tutorial stellt die S...

JavaScript MouseEvent-Fallstudie

Mausereignis Wenn die Maus eine bestimmte Operati...

HTML implementiert problemlos abgerundete Rechtecke

Frage: Wie erreiche ich mit Div+CSS und Positioni...

Schreibreihenfolge und Namenskonventionen sowie Vorsichtsmaßnahmen im CSS-Stil

Die Bedeutung der Schreibreihenfolge Reduzieren S...

HTTP-Rückgabecodeliste (Erklärung auf Chinesisch und Englisch)

Liste der HTTP-Rückgabecodes (unten finden Sie ei...

Zusammenfassung des Speicherorts und Tipps für Docker-Konfigurationscontainer

Tipps zur Verwendung von Docker 1. Bereinigen Sie...

CSS-Positionierungslayout (Position, Positionierungslayoutfähigkeiten)

1. Was ist Positionierung? Das Positionsattribut ...

js, um den Effekt eines Lichtschalters zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...