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 user@mydebian.com (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).



@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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.