Richten Sie eine direkte SSH-Verbindung von A nach C ohne öffentliche IPs über einen öffentlichen SSH-Server ein

Richten Sie eine direkte SSH-Verbindung von A nach C ohne öffentliche IPs über einen öffentlichen SSH-Server ein

Mir stehen folgende SSH-Server/Clients zur Verfügung:

A - ohne öffentliche IP

B - öffentliche IP

C - ohne öffentliche IP

Ich weiß, ich kann eine SSH-Verbindung von A nach C wie folgt herstellen:

1) Haken Sie C an B. Vorgehensweise von C aus:

ssh -R 10100:localhost:22 B_IP

2) Richten Sie die Portweiterleitung von A nach C mithilfe des Hooks B ein, um den SSH-Agenten auf Maschine A verwenden zu können:

ssh -L 5000:localhost:10100 B_IP

3) Jetzt kann ich meine SSH-Schlüssel verwenden, um von A aus „direkt“ auf C zuzugreifen:

ssh -p 5000 localhost

... mein Punkt ist:

Kann ich irgendwie eine neue "reine" Verbindung von A nach C herstellen?damit ich nach dem Ausfall von Maschine B meine Arbeit fortsetzen kann?

Ich denke, es sollte möglich sein, solange diese beiden Computer erkennen, dass sie bereits eine Verbindung teilen, oder liege ich da falsch?

Danke für Ihre Zeit und Ideen :)

Antwort1

  • DerüblichDie beste Methode besteht darin, auf dem Router von A oder C eine „NAT-Portweiterleitung“ einzurichten. (Wie das geht, hängt vom Router ab, aber es gibt überall Anweisungen.) Sobald Sie das getan haben, können Sie eine Verbindung mit der öffentlichen Adresse des C-Routers + dem „weitergeleiteten“ Port herstellen, und die Verbindung wird zu C durchgestellt.

    (Hinweis: NAT-Portweiterleitung und SSH-Portweiterleitung sind ähnlichaber deutlichDinge wie ein Hammer und ein Schraubenzieher. Verwechseln Sie sie nicht.)

  • Wenn Sie keinen Administratorzugriff auf einen der Router haben, können Sie versuchen, mithilfe von UPnP oder NAT-PMP eine Portweiterleitungsregel einzurichten, wie dies bei vielen Spielen und P2P-Programmen der Fall ist. Verwenden Sie hierfür die Befehle upnpcoder natpmpc.

  • Wenn keine der oben genannten Methoden funktioniert, benötigen Sie eine Form vonNAT-Löcher durchbohren. (Siehe auch dieTCPUndICMPLocherartikel.)

    Leider wird es in verschiedenenSpezifischProgramme, es scheint nicht viele zu gebengenerischTools für TCP, obwohlAbonnierenkönnte funktionieren.

Antwort2

Dies ist wahrscheinlich unmöglich, es sei denn, Sie können eine Art Portweiterleitung auf den Routern durchführen – in diesem Fall benötigen Sie Computer C jedoch überhaupt nicht.

Die Sache ist, dass Sie in Ihrem Beispiel nicht direkt von A -> C gehen, die Pakete durchlaufen immer noch alle B.

Wenn Sie einen anderen Computer mit öffentlichen Adressen haben, können Sie wahrscheinlich ein VPN-Setup in einer Sterntopographie einrichten und Routing zwischen den VPNs verwenden, um ein virtuelles Netzwerk zu erstellen, in dem jeder der öffentlichen Hosts ausfallen kann und alles weiter funktioniert. Ich habe dies mit OpenVPN gemacht – es gibt ein paar Fallstricke – ein wichtiger ist das Deaktivieren der Reverse Path Filtering.

Antwort3

Eine Möglichkeit hierfür wäre die Verwendung eines Peer-to-Peer-VPN – eines VPN, bei dem keiner der Hosts eine statische IP-Adresse oder einen statischen Domänennamen benötigt, der auf ihn verweist. Andere der unten genannten Ideen sind keine echten VPNs, sondern Software, die über eine Art Protokoll eine Peer-to-Peer-Verbindung herstellt. Hier sind einige Optionen:

Bezogen auftox.chatNetzwerk:

Ich persönlich habe beide Lösungen ausprobiert, aber sie wurden vom Netzwerk meiner Arbeit (im Stil eines großen Unternehmens) blockiert.

  • toxvpn- scheint heute nicht sehr gut gepflegt zu sein, sollte aber funktionieren.
  • tuntox- Ähnliche Idee, allerdings handelt es sich nicht um ein echtes VPN, es kann aber eine Verbindung herstellen und SSH-Ports zwischen zwei Maschinen im Tox-Netzwerk weiterleiten. Beispiele für SSH sind in der README-Datei verfügbar.
Basierend auf öffentlichen, kostenpflichtigen Chat-Diensten

Ich habe keines davon persönlich ausprobiert und bezweifle, dass es funktioniert, aber es könnte einen Versuch wert sein.

  • LAN-Party-VPN- Basierend auf Discord. Scheint derzeit nicht sehr gut gepflegt zu sein, auch README enthält nicht viele Beispiele, aber es wäre vielleicht einen Blick wert.
  • Roboter- scheint nicht sehr gut gepflegt. Auch die Installation scheint schwierig - verwendetGoogle Voice(früher GTalk).
VPNs basierend auf einem öffentlichen Server (von anderen verwaltet)

Persönliche Erfahrung: habe es versucht n2n, aber es wurde vom Netzwerk meiner Arbeit (im Stil eines großen Unternehmens) blockiert.

  • n2n- verwendet ein "Superknoten", die von derntopTeam – der Betrieb erfolgt gemäß n2nder README-Datei von supernode.ntop.org:7777(der Supernode ist ebenfalls freie Software, für den Betrieb ist jedoch wiederum ein öffentlich zugänglicher Server erforderlich).
  • Nubela- Ähnliches Konzept wie n2n, aber stattSuperknotenes heißtLeuchtturm. Sie bieten keinen öffentlich zugänglichen Leuchtturm an, den jeder nutzen kann, aber Sie müssen ihn tatsächlich dnclientauf Ihrem öffentlich verfügbaren VPS ausführen, wie inihre Dokumente. Daher erfüllt es Ihre Anforderungen nicht, aber ich dachte, es wäre trotzdem erwähnenswert.
Andere VPN-Lösungen, die ein kostenpflichtiges Abonnement erfordern.

Im Gegensatz zu den meisten kommerziellen VPN-Diensten gibt es nur wenige, die sich an Poweruser richten und die Kommunikation zwischen zwei Benutzern über die Subnetze des VPNs ermöglichen, die Sie erhalten. Es ist wahrscheinlich, dass es andere Anbieter gibt, die diese Funktionalität bieten können. Hier ist einer:

Basierend auf von der Community gepflegten Netzwerken

Selbst hinter einem starken NAT können Sie möglicherweise Folgendes tun (keine VPNs), wenn Ihre Firewall nicht zu restriktiv ist (was in meinem Fall nicht der Fall war):

  • tor- Versuchendieser Leitfaden. Im Grunde erstellen Sie eine .onionDomäne (Tor-Dienst), auf die Tor-Benutzer aus der ganzen Welt zugreifen können.
  • i2pd- Versuchendieser Leitfadendie auch Anweisungen für i2dpden i2pClient enthalten, den ich empfehlen würde.
Lösung als letztes Mittel

Selbst mit den lästigsten Firewalls, NAT und anderen Netzwerkbeschränkungen, denen Sie möglicherweise unterliegen, sollten Sie wunderbarehttps://tmate.io/kostenlose (im Sinne von Freibier und Redefreiheit) Software und Dienste. Allerdings gibt es auch einige Nachteile:

  • Keine interaktiven Befehle (sieheAusgabe #179).
  • Keine scpUnterstützung.
  • tmuxDie Version, auf der der Fork basiert, ist von heute 2.6.0, während die aktuelle neueste Version von tmux ist 3.3a- das bedeutet, dass Sie nicht unerhebliche Anpassungen vornehmen müssen, damit Ihr ~/.tmux.confals funktioniert (siehe~/.tmate.confzB aus meinen persönlichen Dotfiles).

Obwohl die Betreuer von tmate dies nicht explizit erwähnen, denke ich, dass die ersten beiden genannten Nachteile absichtliche Einschränkungen sind, da Leute diese Fähigkeiten missbrauchen können, um große Datenmengen über tmate.ioden Server von zu übertragen. Daher wird dies tmatetatsächlich zu einer Art „Remote-Desktop“ für Ihre Shell. Sie müssen andere Methoden finden, um Dateien zwischen den beiden Maschinen zu übertragen (denken Sie daranSynchronisierung).

Insgesamt ist tmate aufgrund seiner Benutzerfreundlichkeit und seiner hervorragenden Leistung meiner Meinung nach die beste Lösung. Zusammen mitSynchronisierungZum Übertragen von Dateien ist es meiner Meinung nach die beste und zuverlässigste Lösung.

verwandte Informationen