SSH-Tunneling selbst für den Fernzugriff von einem dritten Rechner aus

SSH-Tunneling selbst für den Fernzugriff von einem dritten Rechner aus

Ich habe Schwierigkeiten zu verstehen, ob und wie Folgendes möglich ist.

Angenommen, ich habe eine Maschine T(Ziel), auf die ich remote zugreifen möchte (idealerweise über ssh).

Tbefindet sich hinter einem Router/einer Firewall Rund ich kann Port (z. B.) 22von nicht Ran Port 22 von weiterleiten T. Kurz gesagt, es ist kein direkter sshZugriff auf Tmöglich.

Nun sagen Sie das

  • Ich habe eine Maschine A, über die ich die volle Kontrolle habe.

  • Ich kann per SSH von Tnach A, d. h.

      T:  ssh user@A
    

    gelingt es.

Frage 1:kann ich dies verwenden, um auf die Shell Tvon zuzugreifen? D. h. kann ich die von zu Aerstellte Verbindung verwenden , um von zu verwenden ?TATA

   T ---> ssh ----> A          # this is possible               

   T <--- ? shell ? <---- A    # is this possible?

Frage 2:WennFrage 1ist möglich:

Angenommen, ich habe eine dritte Maschine L(z. B. meinen Laptop) und möchte Tvon aus auf die Shell von zugreifen L. Kann ich per SSH-Tunnel Aauf zugreifen L?

   T ----> ssh ----> A <---- ssh < ---- L

   T <-------  ?? %&£€ ?? <------- L       # is this possible?

jede Hilfe ist willkommen.

Antwort1

Dies ist selbstverständlich möglich.

Frage 1: ist Reverse-Tunneling über SSH möglich?

JaHier einige Antworten zum Thema Reservetunnelbau:

Fragebogen: Ist das Tunneln eines reservierten Tunnels möglich?

Ja, dies ist im Grunde ein SSH-Tunnel über einen Tunnel. Hier sind einige Antworten zum Thema Tunnel in einen Tunnel:

Antwort2

Ich mache das die ganze Zeit, nur in die andere Richtung. Bauen Sie zuerst einen umgekehrten SSH-Tunnel von T zum lokalen Host auf A auf, dann einen Tunnel von L zur A-Seite des AT-Tunnels, stellen Sie dann per SSH eine Verbindung zum lokalen Teil des LA-Tunnels her und stellen Sie die Remoteverbindung über LAT her.

In meinem Beispiel wartet A auf Port 22123 auf SSH-Verbindungen.
Lokal verwende ich den Benutzernamen „user“, remote ist es „user.name“.
Ich habe lokale Schlüssel namens „~/.ssh/A_id_rsa“ und „~/.ssh/T_id_rsa“, um mich mit den beiden Maschinen A bzw. T als „user.name“ zu verbinden.

Hier ist ein Skript zum Verbinden des TA-Tunnels, das auf T ausgeführt werden sollte.

#!/bin/bash

SSH_KEY="-i /home/Benutzer.name/.ssh/A_id_rsa"
REMOTE_USER="Benutzername"
GATEWAY_MACHINE="A.Domäne.com"
GATEWAY_SSH_PORT="22123"

ssh -N -R2201:127.0.0.1:22 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}

Hier ist ein Skript zum Verbinden des LA-Tunnels, das auf L ausgeführt werden sollte.

#!/bin/bash

SSH_KEY="-i /home/Benutzer/.ssh/A_id_rsa"
REMOTE_USER="Benutzername"
GATEWAY_MACHINE="A.Domäne.com"
GATEWAY_SSH_PORT="22123"

ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}

Dann füge ich Folgendes zur Datei /etc/hosts meines lokalen Hosts hinzu, sodass ich die lokale Seite des Tunnels als T bezeichnen kann:-

127.0.0.1 T

Dann habe ich dieses Skript, in unserem Beispiel /usr/local/bin/T genannt, um eine Verbindung damit herzustellen

#!/bin/bash

SSH_KEY="-i /home/Benutzer/.ssh/T_id_rsa"
REMOTE_USER="Benutzername"

ssh -p 2201 ${SSH_KEY} ${REMOTE_USER}@T

Der TA-Tunnel ist umgekehrt, also -R, der LA-Tunnel ist lokal, also -L. Das -N in den Skripten verhindert, dass sie eine Shell für A starten, daher führe ich das normalerweise aus, entweder mit einem &, um es im Hintergrund auszuführen, oder drücke Strg+Z und führe bg aus, um es auszuführen, nachdem ich das Passwort zum Entsperren von A_id_rsa eingegeben habe, wenn ich es nicht bereits in meinen Schlüsselbund geladen habe.

verwandte Informationen