Wie ssh zwei Computer hinter NAT und Firewall, ohne dritten Computer

8

Ich versuche, in meine Linux-Box zu Hause ssh. Mein Zuhause ist eine Umgebung in einem Schlafsaal - NAT und Firewall mit einem persönlichen Laptop, auf dem Arch Linux ausgeführt wird. Meine Arbeit ist Corporate Style Windows 7 - NAT- und Proxy-Firewall, keine Administratorrechte.

Ich kann die beiden tragbaren Team Viewer miteinander verbinden. Dies passt jedoch nicht zu dem, was ich wirklich suche. Ich schaue einfach nach SSH in meine Linux-Box zu Hause und lasse meine Linux-Box vollständig abgemeldet - im Grunde ohne Kopf, wenn ich nicht da bin.

Ich habe das Tunneln gelesen, aber wenn ich das Tunneln richtig verstehe, brauche ich einen Drittanbieter-Server, mit dem sich beide Computer verbinden können. Ich habe keinen solchen Server und möchte auch nicht für so etwas bezahlen.


Was ist die einfache und sichere Lösung, um SSH von meinem Arbeitsplatz aus in meinen Laptop zu integrieren? Gibt es einen freien und sicheren "dritten Server"? Ich war Google auf und ab, scheint aber immer verwirrter zu werden.

user1026169
quelle
2
Hast du Zugriff auf den Router? Normalerweise müssen Sie die NAT-Einstellungen anpassen, um Ihre öffentliche IP-Adresse auf Ihren internen SSH-Server zu verweisen, um so etwas zu tun.
jmreicha
Nein, ich habe keinen Routerzugang und kann die NAT-Einstellungen nicht anpassen.
user1026169
In diesem Fall müssen Sie wahrscheinlich eine Verbindung über einen dritten Server herstellen, wenn die Team Viewer-Option nicht funktioniert.
jmreicha
Wer stellt einen Server bereit, den ich nur als Proxy für SSH verwenden kann?
user1026169
Ich wette, ein Cloud-basierter VPS würde den Trick tun.
jmreicha

Antworten:

16

pwnat ist ein Open-Source-Tool, das dieses Problem ansprechen soll. Es sagt :

pwnat ist ein Tool, das eine beliebige Anzahl von   Clients hinter NATs zur Kommunikation mit einem Server hinter einem separaten NAT   mit Nein Portweiterleitung und Nein DMZ-Setup auf beliebigen Routern in Reihenfolge   um direkt miteinander zu kommunizieren. Der Server muss nicht   etwas über die Clients wissen, die versuchen, eine Verbindung herzustellen.

Es gibt keinen Middle Man, keinen Proxy, keinen Drittanbieter, kein UPnP / STUN / ICE, kein Spoofing und keine DNS-Tricks.

Noch wichtiger ist, dass der Client eine Verbindung zu einem beliebigen Host oder Port herstellen kann   einem beliebigen entfernten Host oder einem vom Server festgelegten festen Host und Port.

pwnat stellt diese Art der Verbindung her:

Maschine A (IP: 192.168.1.3) - & gt; NAT A (IP: 122.x.x.x) - & gt; Internet - & gt;   NAT B (IP: 59.x.x.x) - & gt; Maschine B (192.168.2.10)

pwnat wird nur für Linux verteilt, aber der Artikel PWNAT: Kompilierte Windows-Version enthält das Windows-Version . Siehe auch vom selben Autor PWNAT: Beispiel .

Die von pwnat verwendete Methode ist unglaublich clever, aber das kann man nicht garantieren Es wird mit Ihrer Umgebung funktionieren.

harrymc
quelle
1
Hinweis: pwnat ist für die Arbeit von ICMP abhängig. Insbesondere haben icmp echo und time messages überschritten. Dies funktioniert, weil ICMP zustandslos ist.
shadowbq
Funktioniert nicht für mich. NAT-Router sind weder intelligent genug, um Standards zu implementieren, noch können sie den Autor von verstehen pwnat. +1 immer noch für Klugheit.
quantum
Ich habe pwnat auch ohne Erfolg versucht. Es ist jedoch möglich, dass meine Konfiguration fehlerhaft ist. Gibt es jemanden, der Erfolg hatte und Unterstützung geben kann?
robguinness
5

Ich persönlich denke, dass das Tunneln die beste Option ist, obwohl Sie noch keinen dritten Server besitzen.

Amazon EC2 bietet a Free Tier Preisoption, die es Neukunden ermöglicht, eine Mikroinstanz von Linux / Windows für bis zu 750 Stunden / Monat kostenlos für ein Jahr zu betreiben. Ich habe den Dienst nicht selbst verwendet, gehe jedoch davon aus, dass ein SSH-Tunnel kostenlos zur Verfügung steht, wenn Sie den virtuellen Server nur bei Bedarf ausführen. Vielleicht finden Sie den Service sogar so billig, dass Sie bezahlen können?

Hak5 eine gute Einführung in den Tunnelbau (mit Ausdauer). Sie können auch ein CRON-ausgelöstes Skript einrichten, um Verbindungen zum virtuellen Server herzustellen, sodass Sie innerhalb von Minuten nach dem Starten der EC2-Instanz auf den Laptop zugreifen können.

danielcraigie
quelle
Vielen Dank, ich habe ein kostenloses VPS mit Hilfe einiger Foren gefunden.
user1026169
1
Beachten Sie auch, dass 750 Stunden 31,25 Tage sind. Im Grunde erhalten Sie also eine t2.micro Beispiel kostenlos für ein Jahr.
Attie
3

Die beste Option wäre, wenn möglich, die Portweiterleitung einzurichten. Wenn Ihr Campus die Firewall jedoch durchführt und Sie selbst keine Portweiterleitung durchführen können, verwenden Sie diesen Vorschlag.

Ja, es gibt einen kostenlosen dritten Server, den Sie bereits verwenden, TeamViewer. Stellen Sie sicher, dass Sie TeamViewer als Dienst installiert haben (oder was auch immer für Linux gilt, ich verwende nur die Windows-Version). Installieren Sie dann den VPN-Treiber bei der Arbeit und zu Hause. Sie können dann über ein VPN von der Arbeit aus eine Verbindung herstellen und Ihr Heimcomputer verfügt über eine 7.x.x.x-IP-Adresse. Wenn Sie an einer Terminalsitzung teilnehmen möchten, führen Sie SSH über die VPN-Verbindung aus.

Die Option zum Installieren von VPN befindet sich unter erweiterten Einstellungen. enter image description here

Dadurch wird eine "VPN" -Option für die Verbindungstypen hinzugefügt, die Sie ausführen können. enter image description here

Scott Chamberlain
quelle
1
Vielen Dank für die ausführliche Hilfe und Screenshots. Ich verwende zwar TeamViewer Portable und habe keine Administratorrechte. Die VPN-Option ist ausgegraut und ich kann sie nicht verwenden.
user1026169
1

Es sollte nur möglich sein, die Portweiterleitung (Port 22) auf Ihrem Heimrouter / Ihrer Firewall einzurichten. Verbinden Sie sich dann mit Ihrer öffentlichen IP-Adresse zu Hause, wenn Sie bei der Arbeit sind. Sie könnten so etwas wie dyndns verwenden, wenn Sie zu Hause keine statische öffentliche IP-Adresse haben.

NetworkFish
quelle
Portweiterleitung ist auf keinem meiner Rechner aufgrund des Netzwerks möglich, das sie bedient. Ich habe kein IP-Setup, es gibt jedoch keine Ports, über die ich die Maschinen anschließen kann.
user1026169
0

Sie können einen öffentlichen XMPP / Tox-Server als "dritten Server" verwenden. Es gibt nämlich Projekte wie Tuntox und PPPoAT (PPP over Any Transport), die diese Instant Messaging-Protokolle als Transportschichten verwenden.

Ich habe das PPPoAT ausprobiert, das XMPP unterstützt. Im Gegensatz zu PWNAT funktioniert dieser Mechanismus tatsächlich für mich.

Für die Verwendung benötigen Sie zwei XMPP-Konten auf einem öffentlichen Server - einen für den Server, auf dem Sie sich anmelden möchten, und einen für Ihren Client. Nachdem du angefangen hast pppoat Auf dem Server und dann auf dem Client (beide mit den entsprechenden Konfigurationsparametern) können Sie die Verbindung sofort starten, z.

ssh [email protected]

Es ist natürlich langsamer als eine direkte Verbindung, und die Geschwindigkeit hängt höchstwahrscheinlich von dem von Ihnen gewählten XMPP-Server ab. Für normale Konsolenaktivitäten ist dies jedoch ausreichend.

Was die Sicherheit anbelangt, kann SSH in einem völlig unsicheren Netzwerk arbeiten, da es bereits eine eigene Verschlüsselung implementiert. Ob die XMPP-basierte Verbindung sicher ist, ist bei der Verwendung von SSH eigentlich unerheblich.

Ruslan
quelle