In diesem Blogbeitrag zeige ich Ihnen, wie Sie mit einem netten Tool namens Mole ganz einfach einen SSH-Tunnel zu einem Remote-Linux-Server erstellen. Ich habe gelernt, dass einer der großen Nachteile von SSH-Tunneln die Komplexität ihrer Erstellung, die damit verbundenen Befehle und weniger Dokumentation zu diesem Thema ist. Für Endnutzer kann es schwierig sein, SSH-Befehle zu beherrschen, aber das Cheatsheet "Meine SSH-Befehle" kann Ihnen dabei helfen, mit SSH schneller zu werden.
Wahrnehmung von Open Source
Die Open-Source-Community war sehr hilfreich, um die Wahrnehmung von Linux und seinen unzähligen Tools zu ändern. Bei fairer Kritik wird Linux für Geeks nicht mehr als "das Ding" angesehen. Heutzutage können Benutzer mit wenig technischer Erfahrung es verwenden und lernen, während sie die Dinge ein wenig kaputt machen, lol!
Einführung in Maulwurf
Das Tool, das wir zum Erstellen eines SSH-Tunnels unter Linux verwenden, ist Mole. Mole ist eine CLI-Anwendung zum Erstellen von SSH-Tunneln, die einen lokalen Port über einen SSH-Server an einen Remote-Endpunkt weiterleitet.
Mole hilft Ihnen beim Zugriff auf Computer und Dienste, die von einer Firewall blockiert werden, solange der Benutzer SSH-Zugriff auf einen Computer mit Zugriff auf den Zielcomputer oder Dienst hat.
+----------+ +----------+ +----------+ | | | | | | | | | Firewall | | | | | | | | | | Lokal | Tunnel +----------+ Tunnel | | | Computer |--------------------------------| Server | | | +------------+ | | | | | | | | | | | Firewall | | | | | | | | | +----------+ +----------+ +----------+ | | | Tunnel | | +------------+ | | | | | | | | | Fernbedienung | | Computer | | | | | | | +----------+
Mit Mole können Sie mit Hilfe der Portweiterleitung auch auf einen Dienst zugreifen, der nur auf einer lokalen Adresse lauscht. Weitere Informationen zum Erstellen einer Portweiterleitung auf CentOS 7 mit Firewalld.
Beachten Sie auch, dass Server und Remote
Computer könnte möglicherweise dieselbe Maschine sein.
+-------------------+ +--------------------+ | Lokaler Computer | | Remote / Server | | | | | | | | | | (172.17.0.10: | Tunnel | | | 50001) |-------------| (172.17.0.100:22) | | Tunnel-Client | | Tunnelserver | | | | | | | | | Hafen | | | Hafen | | | vorwärts | | | vorwärts | | | | | | | | (127.0.0.1:3306) | | (127.0.0.1:50000) | | lokale Adresse | | | | | | | | lokal | | | | | conn. | | | | | | | | | (127.0.0.1:3306) | | | | entfernte Adresse | | | | +----+ | | | | | DB | | | | | +----+ | +-------------------+ +--------------------+
Hervorgehobene Eigenschaften von Maulwurf
- Automatische lokale Adressauswahl: Finden Sie einen verfügbaren Port und hören Sie ihn an, also die Flagge
-lokal
muss nicht jedes Mal angegeben werden, wenn Sie die App ausführen. - Aliase: Speichern Sie Ihre Tunneleinstellungen unter einem Alias, damit sie später wiederverwendet werden können.
- Nutzen Sie die SSH-Konfigurationsdatei: Einige Optionen verwenden (e.G. Benutzername, Identitätsschlüssel und Port), angegeben in
$HOME/.ssh/config
wann immer möglich, damit Sie nicht an mehreren Stellen dieselbe SSH-Serverkonfiguration verwenden müssen.
So installieren Sie Mole unter Linux / macOS
Die Installation von Mole unter Linux erfolgt über ein Installationsskript, das mit heruntergeladen werden kann Locken
curl -O https://raw.githubusercontent.com/davrodpin/mole/master/tools/install.Sch
Sobald das Skript heruntergeladen wurde, machen Sie es ausführbar und installieren Sie es
chmod +x installieren.sh sudo ./Installieren.Sch
Dieses Skript installiert Maulwurf unter,/usr/local/bin
aber es benötigt Administratorrechte, um die Datei bereitzustellen. Möglicherweise müssen Sie Ihr Sudo-Passwort eingeben.
Sie können den Speicherort und die Version der Datei mit den folgenden Befehlen bestätigen:
$ welcher Maulwurf /usr/local/bin/mole $ Maulwurf --version Maulwurf 0.2.0
Um die Hilfeseite anzuzeigen, verwenden Sie die --Hilfe
Möglichkeit
$ mole --help Verwendung: mole [-v] [-local []:] -Fernbedienung []: -Server [@][:] [-Schlüssel ] Maulwurf -alias [-v] [-lokal []:] -Fernbedienung []: -Server [@][:] [-Schlüssel ] Maulwurf -alias -Maulwurf löschen -start mole -help mole -version -alias string Tunnelalias erstellen -delete Tunnelalias löschen (muss mit -alias verwendet werden) -help Alle verfügbaren Optionen auflisten -key string (optional) Serverauthentifizierungsschlüsseldateipfad festlegen -lokaler Wert (optional .) ) Lokale Endpunktadresse festlegen: []: -Remote-Wert Set-Remote-Endpunkt-Adresse: []: -Serverwert setzen Serveradresse: [@][:] -start string Starte einen Tunnel mit einem gegebenen Alias -v (optional) Erhöhe die Ausführlichkeit des Logs -version Zeigt die Version des Maulwurfs an
So verwenden Sie Mole, um einen SSH-Tunnel zu erstellen
Sehen wir uns einige Beispiele an, wie Sie mit Mole einen SSH-Tunnel erstellen
Beispiel 1: Alle unterstützten Optionen angeben
Erstellen Sie einen Tunnel mit den folgenden Details:
- Auf localhost-Port 8080
- Mit Pseudonym
Tunnel1
- Zur Server-IP 192.168.18.50:80
- Remote-ssh-Benutzer ist Landstreicher, Der verwendete SSH-Server ist 192.168.18.51:22
- Die Authentifizierungsmethode sind öffentliche/private SSH-Schlüssel
- Speicherort des öffentlichen SSh-Schlüssels
~/.ssh/test_rsa.Kneipe
- Privater SSH-Schlüssel
~/.ssh/test_rsa
Sie müssen Ihren öffentlichen SSH-Schlüssel auf den Remote-SSH-Server kopiert haben, der zum Tunneln verwendet wird
$ ssh-copy-id -i ~/.ssh/test_rsa.Kneipe [E-Mail geschützt]
Importieren Sie den Fingerabdruck des entfernten SSH-Servers, indem Sie eine SSH-Verbindung zum Server ausführen
$ ssh-i ~/.ssh/test_rsa.Kneipe [E-Mail geschützt]
Erstellen Sie nun einen Tunnel:
$ Maulwurf -alias tunnel1 -v -local 127.0.0.1:8080 \ -Fernbedienung 192.168.18.50:80 \ -server [email protected] \ -key ~/.ssh/test_rsa
Um den Tunnel zu starten, verwenden Sie
$ Maulwurf -Tunnel starten1
Beispielausgabe
$ Maulwurf -start tunnel1 DEBU[0000] cli options options="[local=127.0.0.1:8080, Fernbedienung=192.168.18.50:80, [email protected], key=/home/jmutai/.ssh/test_rsa, verbose=true, help=false, version=false]" DEBU[0000] Server: [name=192.168.18.51, Adresse=192.168.18.51:22, Benutzer=Landstreicher, Schlüssel=/home/jmutai/.ssh/test_rsa] DEBU[0000] Tunnel: [local:127.0.0.1:8080, Server:192.168.18.51:22, Fernbedienung:192.168.18.50:80] INFO[0000] Abhören der lokalen Adresse local_address="127.0.0.1:8080" DEBU[0017] neue Verbindungsadresse="127.0.0.1:36908" DEBU[0017] bekannte_hosts-Datei verwendet: /root/.ssh/known_hosts DEBU[0019] neue Verbindung zum Server aufgebaut server="[name=192 .".168.18.51, Adresse=192.168.18.51:22, Benutzer=Landstreicher, Schlüssel=/home/jmutai/.ssh/test_rsa]" DEBU[0024] neue Verbindung zur entfernten Fernbedienung hergestellt="192.168.18.50:80" server="[name=192.168.18.51, Adresse=192.168.18.51:22, Benutzer=Landstreicher, Schlüssel=/home/jmutai/.ssh/test_rsa]" DEBU[0024] neue Verbindungsadresse="127.0.0.1:36910" DEBU[0024] bekannte_hosts-Datei verwendet: /root/.ssh/known_hosts DEBU[0026] neue Verbindung zum Server aufgebaut server="[name=192 .".168.18.51, Adresse=192.168.18.51:22, Benutzer=Landstreicher, Schlüssel=/home/jmutai/.ssh/test_rsa]" DEBU[0029] neue Verbindung zur entfernten Fernbedienung hergestellt="192.168.18.50:80" server="[name=192.168.18.51, Adresse=192.168.18.51:22, Benutzer=Landstreicher, Schlüssel=/home/jmutai/.ssh/test_rsa]"
Beispiel 2: Verwenden Sie die ssh-Konfigurationsdatei, um einen bestimmten Serverhost zu suchen
Sie können die SSH-Konfiguration für den Remote-SSH-Server hinzufügen zu ~/.ssh/config
, dann ruf seinen Namen, während du Maulwurf läufst.
$ vim ~/.ssh/config Host rserver1 Hostname 192.168.18.51 Benutzer Vagabund Port 22 IdentityFile ~/.ssh/test_rsa
Dann baue einen Tunnel
$ Maulwurf -alias tunnel1 -v -local 127.0.0.1:8080 \ -Fernbedienung 192.168.18.50:80 \ -server rserver1
Sie können auch verwenden :8080 Anstatt von 127.0.0.1:8080
$ mole -alias tunnel1 -v -local :8080 \ -remote 192.168.18.50:80 \ -server rserver1 $ mole -start tunnel1
Gleiches für Remote-Server-Port
$ Maulwurf -alias tunnel1 -v -local 127.0.0.1:8080 \ -remote :80 \ -server rserver1
Beispiel 3: Maulwurf willkürlich den lokalen Endpunkt auswählen
Sie sollten bemerkt haben, dass wir den lokalen Hafen angegeben haben 8080
für Tunnelverkehr mit Option zu verwenden -lokal 127.0.0.1:8080
. Mole kann ungenutzte TCP-Ports zufällig für Sie auswählen.
Dazu Beispiel 2 wird sich ändern zu
$ Maulwurf -alias Tunnel1 -Remote 192.168.18.50:80 -server rserver1 $ mole -start tunnel1
Eine lokale Adresse für den Zugriff wird ausgedruckt
INFO Abhören der lokalen Adresse local_address="127.0.0.1:36683"
Bestätigen Sie, dass Sie über den Tunnel auf einen Webserver auf einem Remote-Server zugreifen können.
Um den SSH-Tunnel zu löschen, führen Sie Folgendes aus:
$ Maulwurf -delete -alias tunnel1
Ich hoffe, diese wenigen Beispiele waren hilfreich, um Ihnen beim Erstellen eines SSH-Tunnels zu einem Remote-Server zu helfen, der sich hinter einer Firewall befinden könnte. Du kannst auf Github zu diesem Projekt beitragen.