Einführung
SSH, auch als Secure Shell bekannt, kann weit mehr als nur zum Erhalt einer Remote-Shell verwendet werden. Dieser Artikel zeigt, wie SSH für die Portweiterleitung und das Proxying verwendet werden kann.
Die einzigen Voraussetzungen sind ein OpenSSH-Server (standardmäßig auf Vultr Linux-Images installiert) und ein OpenSSH-Client (verfügbar unter Linux, BSD und MS Windows).
Zweck
Ein SSH-Proxy wird hauptsächlich zum Proxy-Webverkehr verwendet. Beispielsweise kann es verwendet werden, um Ihren Webdatenverkehr gegen ein unsicheres lokales Netzwerk zu sichern.
Die SSH-Portweiterleitung wird häufig verwendet, um auf Dienste zuzugreifen, auf die nicht öffentlich zugegriffen werden kann. Beispielsweise könnte auf Ihrem Server eine Webadministration für die Systemadministration ausgeführt werden, z. B. Webmin, die jedoch aus Sicherheitsgründen nur auf Verbindungen auf localhost wartet. In diesem Fall können Sie SSH verwenden, um Verbindungen an einem ausgewählten Port von Ihrem lokalen Computer an den Port weiterzuleiten, an dem der Dienst serverseitig empfangsbereit ist, und Ihnen so über den SSH-Tunnel Remotezugriff auf diesen bestimmten Dienst gewähren. Ein weiteres häufiges Szenario, in dem die SSH-Portweiterleitung verwendet wird, ist der Zugriff auf Dienste in einem entfernten privaten Netzwerk über einen SSH-Tunnel zu einem Host in diesem privaten Netzwerk.
Verwendungszweck
Sowohl für das Proxying als auch für die Portweiterleitung ist keine spezielle Konfiguration auf Ihrem Server erforderlich. Bei SSH wird jedoch immer die Verwendung der schlüsselbasierten Authentifizierung empfohlen. Bitte lesen Sie Wie generiere ich SSH-Schlüssel?
SSH-Proxy
Das Erstellen eines SSH-Proxys ist sehr einfach. Die allgemeine Syntax lautet wie folgt:
ssh -D [bind-address]:[port] [username]@[server]
Wo [bind-address]ist die lokale Adresse, die abgehört werden soll, [port]ist der lokale Port, der abgehört werden soll, [username]ist Ihr Benutzername auf Ihrem Server und [server]ist die IP-Adresse oder der Hostname Ihres Servers. Wenn [bind-address]nicht angegeben, wird standardmäßig SSH verwendet, localhostwas in den meisten Fällen wünschenswert ist.
Hier ist ein praktisches Beispiel:
ssh -D 8080 root@your_server
Um diesen Proxy verwenden zu können, müssen Sie Ihren Browser so konfigurieren, dass er SOCKSv5als Proxy-Typ und 8080als Proxy-Port verwendet wird.
SSH-Portweiterleitung
Die allgemeine Syntax des Befehls lautet wie folgt:
ssh -L [localport]:[remotehost]:[remoteport] [username]@[server]
Wo [localport]sich der Port befindet, an dem der SSH-Client empfangsbereit ist, [remotehost]ist die IP-Adresse des Hosts, an den die Verbindungen weitergeleitet werden. Dies ist der Fall, 127.0.0.1wenn Sie Verbindungen zu Ihrem Server tunneln. Schließlich [remoteport]ist dies die Portnummer auf dem Server, die von dem Dienst verwendet wird, zu dem Sie eine Verbindung herstellen.
Beispiel 1:
Ziehen Sie in Betracht, einen wichtigen Webdienst auf dem Port 10000Ihres Servers auszuführen, der jedoch nicht öffentlich zugänglich ist. Der folgende Befehl wird verwendet, um einen SSH-Tunnel zu diesem Dienst einzurichten.
ssh -L 80:127.0.0.1:10000 root@your_server
Sie können jetzt eine Verbindung herstellen, indem Sie http://127.0.0.1Ihren lokalen Browser eingeben .
Beispiel 2:
Sie haben zwei Vultr-Server in einem privaten Netzwerk. Auf einem läuft eine Linux-Distribution, auf dem anderen MS Windows. Auf der Windows-Instanz wird ein RDP-Server ausgeführt, der jedoch aus Sicherheitsgründen nicht dem Internet ausgesetzt ist. Angenommen, es 192.168.1.5handelt sich um die private IP-Adresse des Windows-Computers. Mit dem folgenden Befehl können Sie über einen Port auf Ihrem Computer eine Verbindung zum Remotedesktop-Server herstellen:
ssh -L 3389:192.168.1.5:3389 root@your_server
Jede RDP-Verbindung von Ihrem Computer zu sich selbst wird jetzt über Ihren Linux-Server zu Ihrem Windows-Server getunnelt.