jak ssh dwa komputery za NAT i Firewall, bez trzeciego komputera

9

Próbuję ssh do mojego Linux-a w domu. Mój dom jest środowiskiem akademickim - NAT i Firewall z osobistym laptopem z systemem Arch Linux. Moja praca to system korporacyjny Windows 7 - NAT i zapora proxy, bez uprawnień administratora.

Jestem w stanie połączyć dwa działające przenośne Team Viewer. Jednak to nie pasuje do tego, czego naprawdę szukam. Chcę po prostu włączyć SSH do mojego Linux-a w domu, pozostawiając moje Linux-a całkowicie wylogowane - w zasadzie bez głowy, kiedy mnie tam nie ma.

Przeczytałem o tunelowaniu, ale jeśli dobrze rozumiem tunelowanie, potrzebuję zewnętrznego serwera, z którym mogą się połączyć oba komputery. Nie mam takiego serwera i też nie chcę za to płacić.


Jakie jest proste i bezpieczne rozwiązanie SSH'ing do mojego laptopa z pracy? Czy istnieje bezpłatny i bezpieczny „trzeci serwer”? Byłem w górę i w dół Google, ale wydaje mi się, że jestem coraz bardziej zdezorientowany.

użytkownik1026169
źródło
2
Czy masz dostęp do routera? Zwykle musisz dostosować ustawienia NAT, aby wskazać swój publiczny adres IP na wewnętrznym serwerze SSH, aby zrobić coś takiego.
jmreicha
Nie, nie mam dostępu do routera i nie mogę dostosować ustawień NAT.
user1026169,
W takim przypadku prawdopodobnie będziesz musiał połączyć się z serwerem proxy za pośrednictwem trzeciego serwera, aby połączyć się, jeśli opcja Team Viewer nie będzie działać.
jmreicha
kto zapewnia serwer, którego mogę używać tylko jako serwera proxy dla ssh?
user1026169,
Założę się, że VPS załatwi sprawę.
jmreicha

Odpowiedzi:

16

pwnat to narzędzie typu open source, które rzekomo rozwiązuje ten problem. To mówi :

pwnat to narzędzie, które pozwala dowolnej liczbie klientów za NAT na komunikację z serwerem za oddzielnym NAT bez przekierowania portów i bez konfiguracji DMZ na dowolnych routerach w celu bezpośredniej komunikacji między sobą. Serwer nie musi nic wiedzieć o klientach próbujących się połączyć.

Nie ma pośrednika, pośrednika, żadnej strony trzeciej, nie jest wymagane UPnP / STUN / ICE, bez fałszowania i żadnych sztuczek DNS.

Co ważniejsze, klient może następnie połączyć się z dowolnym hostem lub portem na dowolnym hoście zdalnym lub ze stałym hostem i portem określonym przez serwer.

pwnat ustanawia ten rodzaj połączenia:

Komputer A (IP: 192.168.1.3) -> NAT A (IP: 122.xxx) -> Internet -> NAT B (IP: 59.xxx) -> Komputer B (192.168.2.10)

pwnat jest dystrybuowany tylko dla Linuksa, ale artykuł PWNAT: Wersja zgodna z Windows zawiera wersję Windows . Zobacz także tego samego autora PWNAT: Przykład .

Metoda stosowana przez pwnat jest niewiarygodnie sprytna, ale nie ma gwarancji, że będzie działać z twoim środowiskiem.

harrymc
źródło
1
Uwaga: pwnat zależy od ICMP do działania. W szczególności komunikaty echa icmp i Przekroczono czas. Działa to, ponieważ ICMP jest bezstanowy.
shadowbq
Nie działa dla mnie. Routery NAT nie są wystarczająco inteligentne, aby wdrożyć standardy, ani wystarczająco inteligentne, aby zrozumieć autora pwnat. +1 nadal za spryt.
kwant
Próbowałem również pwnat bez powodzenia. Ale możliwe, że mam coś nie tak w mojej konfiguracji. Czy jest ktoś, kto odniósł sukces, który może udzielić wsparcia?
robguinness
5

Osobiście uważam, że tunelowanie jest najlepszą opcją, nawet jeśli nie masz jeszcze trzeciego serwera.

Amazon EC2 oferuje opcję wyceny w warstwie Bezpłatna, umożliwiająca nowym klientom uruchomienie mikro instancji Linux / Windows przez 750 godzin miesięcznie, bezpłatnie, przez jeden rok. Sam nie korzystałem z tej usługi, ale zakładam, że jeśli uruchomisz serwer wirtualny tylko w razie potrzeby, uruchomisz tunel SSH za darmo. Może nawet uważasz, że usługa jest wystarczająco tania, aby uzasadnić zapłatę?

Hak5 zapewnił dobre wprowadzenie do tunelowania (z uporem). Możesz także skonfigurować skrypt uruchamiany przez CRON, aby próbował połączyć się z serwerem wirtualnym, aby mieć dostęp do laptopa w ciągu kilku minut od uruchomienia instancji EC2 ...

danielcraigie
źródło
Dziękuję, znalazłem darmowy VPS z pomocą kilku forów.
user1026169,
1
Pamiętaj też, że 750 godzin to 31,25 dni ... Więc w zasadzie dostajesz jedną t2.microinstancję za darmo, na rok.
Attie
3

Najlepszą opcją byłoby skonfigurowanie przekierowania portów, jeśli możesz, ale jeśli twój kampus wykonuje zaporę ogniową i nie możesz samodzielnie przekierować portów, skorzystaj z tej sugestii.

Tak, jest bezpłatny trzeci serwer i już go używasz, TeamViewer. Upewnij się, że masz TeamViewer zainstalowany jako usługa (lub jakikolwiek odpowiednik dla Linuksa, używam tylko wersji Windows). Następnie zainstaluj sterownik VPN w pracy i w domu. Będziesz wtedy mógł łączyć się za pomocą VPN z pracy, a twój komputer domowy będzie miał adres IP 7.xxx. Następnie, jeśli chcesz dostać się do sesji terminalowej, uruchom SSH przez łącze VPN.

Opcja instalacji VPN jest w ustawieniach zaawansowanych. wprowadź opis zdjęcia tutaj

To doda opcję „VPN” dla typów połączeń, które możesz wykonać. wprowadź opis zdjęcia tutaj

Scott Chamberlain
źródło
1
Bardzo dziękuję za szczegółową pomoc i zrzuty ekranu. Korzystam jednak z TeamViewer Portable i nie mam uprawnień administratora. Opcja VPN jest wyszarzona i nie mogę jej użyć.
user1026169,
1

Powinieneś być w stanie skonfigurować przekierowanie portów (port 22) na twoim routerze / firewallu. A następnie połącz się z domowym publicznym adresem IP, gdy jesteś w pracy. Możesz użyć czegoś takiego jak dyndns, jeśli nie masz statycznego publicznego adresu IP w domu.

NetworkFish
źródło
Przekierowanie portów nie jest możliwe na żadnym z moich komputerów ze względu na sieć, która je obsługuje. Nie mam konfiguracji IP, jednak nie ma portów, których można użyć do podłączenia komputerów.
user1026169,
0

Możesz użyć publicznego serwera XMPP / Tox jako „trzeciego serwera”. Mianowicie istnieją projekty takie jak Tuntox i PPPoAT (PPP over Any Transport), które wykorzystują te protokoły komunikatorów jako warstwy transportowe.

Wypróbowałem PPPoAT, który obsługuje XMPP i, w przeciwieństwie do PWNAT, ten mechanizm rzeczywiście działa dla mnie.

Aby z niego korzystać, potrzebujesz dwóch kont XMPP na dowolnym serwerze publicznym - jednego dla serwera, na którym chcesz się zalogować, drugiego dla swojego klienta. Po uruchomieniu pppoatna serwerze, a następnie na kliencie (oba z odpowiednimi parametrami konfiguracji), możesz natychmiast nawiązać połączenie, np

ssh [email protected]

Oczywiście będzie wolniejsze niż bezpośrednie połączenie, a prędkość najprawdopodobniej będzie zależeć od wybranego serwera XMPP, ale do normalnej aktywności konsoli jest wystarczająco dobra.

Jeśli chodzi o bezpieczeństwo, SSH może działać w całkowicie niezabezpieczonej sieci, ponieważ już implementuje własne szyfrowanie, więc to, czy połączenie oparte na XMPP jest bezpieczne, nie ma znaczenia podczas korzystania z SSH.

Ruslan
źródło