SSH-Tunnel durch Zwischenhändler-Server - wie in einem Schritt eine Verbindung herstellen (mithilfe eines Schlüsselpaars)?

9

Meine Frage ist im Grunde, wie ich meine vorhandenen zwei Schritte in einen Schritt verwandeln kann.

Ich habe einen funktionierenden SSH-Tunnel zwischen zwei Computern eingerichtet, der einen Mittelsmann-Server wie diesen verwendet:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

Was ich derzeit mache, ist SSH von Kubuntu_laptop zu Debian_Server und dann von Debian_Server zu Kubuntu_desktop. Ich möchte diesen einen SSH-Befehl ausführen, der auf meinem Kubuntu_laptop in bash ausgegeben wird und dazu führt, dass ich mit dem Kubuntu_desktop (shell / bash) verbunden bin.

Die Befehle, die ich jetzt verwende, sind wie folgt. Schritt 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

Schritt 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

Dann bin ich über SSH (von kubuntu_laptop) mit dem kubuntu_desktop verbunden.

Für alle SSH-Verbindungen sind RSA-Schlüssel erforderlich. Die Passwortanmeldung ist rundum deaktiviert. Beachten Sie, dass sich die Computerbenutzerkonten auf zwei Computern unterscheiden.

In Bezug auf die Verbindung für dieses Bein:

Debian_Server<--nat_fw<--Kubuntu_desktop

So wird es aufgebaut:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

Beachten Sie, dass Kubuntu_desktop als [email protected] (nicht admin @ debian_server) eine Verbindung zu middleman herstellt. Wenn ich mich jedoch mit Kubuntu_desktop verbinde, verbinde ich mich als Administrator.

Ich kann den vorhandenen Überwachungsport (5234) oder die Remote-Portnummer (- R) (in diesem Beispiel 1234) nicht ändern. Ich kann die SSH-Sicherheit nicht ändern, um Kennwortanmeldungen zuzulassen. Ich kann keine neuen Firewall-Ports öffnen. Ich kann keine Benutzerkonten ändern (außer auf einem Laptop).

MountainX
quelle
Schauen Sie sich diese Frage an: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging
@HaukeLaging - scheint interessant, aber ich verstehe es nicht. Was ist "nc"? Und auf welchem ​​Computer wird ~ / .ssh / config bearbeitet? Grundsätzlich brauche ich mehr Details als diese Frage / Antwort liefert. Vielen Dank.
MountainX
Diese Frage wurde (ohne Benachrichtigung) an Server Fault SE weitergeleitet. Das ist sehr schlechte Form!
mdpc
Danke für die Abstimmungen überall, aber was ist falsch daran, an zwei verschiedenen Orten zu fragen? Wirst du mich auch daran hindern, auf ubuntuforums.org oder woanders zu fragen?
MountainX
@ HaukeLaging-Wenn ich ProxyCommand in meinem Laptop ~ / .ssh / config verwende, was gebe ich für den Hostnamen des Kubuntu_Desktop ein? Es gibt kein fqdn. Dies ist Reverse SSH. Vielen Dank.
MountainX

Antworten:

8

Stellen Sie sicher, dass netcat auf dem Debian-Server installiert ist, und verwenden Sie es ProxyCommandin Ihrer lokalen SSH-Konfiguration ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234
Ignacio Vazquez-Abrams
quelle
Der Vollständigkeit halber habe ich alle meine Schritte in einer anderen Antwort angegeben, aber es war alles dank Ihrer Hilfe. Ich akzeptiere deine Antwort. Danke!!!
MountainX
6

Dank @Ignacio Vazquez-Abrams sind hier alle Schritte:

Stellen Sie sicher, dass netcat auf dem Debian-Server installiert ist, und verwenden Sie ProxyCommand in Ihrer lokalen SSH-Konfiguration (~ / .ssh / config).

Ich habe die Konfiguration wie folgt bearbeitet:

me@kubuntu_laptop:~/.ssh$ nano config

Der Inhalt ist:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Dann einfach verbinden:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

In 1 Schritt über SSH mit kubuntu_desktop verbunden! Perfekt

Aktualisieren:

Dies macht es flexibler:

me@kubuntu_laptop:~/.ssh$ nano config

Die neuen Inhalte sind:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Dann verbinde dich einfach mit Mama:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

Und verbinde dich mit Papa:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Natürlich müssen Mama und Papa Schritt 0 eingerichtet haben (von meiner ursprünglichen Frage), bei dem jeder seinen eigenen -R-Port definiert hat. Beispiel für Papa:

Schritt 0 (für Papa):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

Optional:

DAD=5678
ssh family_desktops -p $DAD
MountainX
quelle
Der ProxyCommand kann auch wie folgt geschrieben werden: Netcat muss ProxyCommand ssh debian_server_fqdn -W localhost:%palso nicht auf dem Debian-Server vorhanden sein.
Kevin