SSH-Portweiterleitung über ein Pseudoterminal

0

Hier ist eine Situation:

Ich mache meine ganze Arbeit auf einem Mac.

  1. Es gibt einen bestimmten Linux-Server ' server01 ', der über ein Pseudoterminal Zugriff auf einen anderen Linux-Server ' server02 ' bietet

    Um in ' server02 ' zu sshen , mache ich das von meinem Mac aus:

    ssh -t server01 'inline server02'
    
  2. Dann fragt es mich nach einem Passwort für ' server01 '; Ich gebe es ein und das meldet mich bei ' server02 ' an. Jetzt bin ich am ' server02 ' Terminal.

  3. Von ' server02 ' aus kann ich mit dem folgenden mysql-Befehl auf die mysql - Datenbank zugreifen, die sich auf ' server03 ' befindet:

    mysql --host=server03 --port=4201 --user=myuser --password=mypass mydb
    
  4. Weder ' server01 ' noch ' server02 ' oder mein Mac haben direkten SSH-Zugriff auf ' server03 '

Jetzt möchte ich von meinem Mac aus über eine Art Portweiterleitung direkt auf den MySQL - Code auf ' server03 ' zugreifen . Wenn ich also den folgenden Befehl auf meinem Mac-Terminal eingebe , sollte er mich mit der mysql-Datenbank auf ' server03 ' verbinden:

mysql --host=localhost --port=4201 --user=myuser --password=mypass mydb

Gibt es eine Möglichkeit, das zu tun? Jede Hilfe wird sehr geschätzt.

user3142747
quelle

Antworten:

0

Richten Sie eine Kette von Weiterleitungen ein. Stellen Sie zunächst eine Verbindung zu Server1 her und fügen Sie eine Weiterleitung für SSH-Verbindungen zu Server2 hinzu:

mac% ssh -f -N -L 10022:server2:22 server1

(Mit den -f -NOptionen wird es im Hintergrund ausgeführt.)

Stellen Sie dann über diese Weiterleitung eine Verbindung zu Server 2 her und fügen Sie eine Weiterleitung für MySQL-Verbindungen zu Server 3 hinzu:

mac% ssh -f -N -L 14201:server3:4201 -p 10022 -o HostkeyAlias=server2 localhost

(Sie stellen eine Verbindung zum localhostPort her 10022, und mit der früheren Weiterleitung können Sie Server2 erreichen. HostkeyAlias ​​ist optional, nur eine Paranoia.)

Stellen Sie schließlich eine Verbindung zu Server 3 her:

mac% mysql --host=localhost --port=14201 ...
Grawity
quelle
Danke für Ihre Antwort. Nach dem Ausführen des zweiten Befehls ist ein Fehler aufgetreten. Hier ist der Fehler: Kanal 2: Öffnen fehlgeschlagen: administrativ verboten: öffnen , ist fehlgeschlagen ssh_exchange_identification: Verbindung von Remote - Host geschlossen Nur um zu klären, mein Mac keinen direkten SSH - Zugriff auf server3
user3142747
Haben Sie weitere Ideen, wie ich diesen Fehler beheben kann?
user3142747