2012-01-10 13 views
14

Jestem obecnie próbuje dowiedzieć się, jak ssh do serwerów za zaporami ogniowymi, które zaprzeczają wszystkie połączenia przychodzące. Serwery mogą wysyłać SSH, więc zastanawiam się, czy istnieje sposób, aby serwer za firewallem stworzyć tunel SSH na mojej stacji roboczej, a następnie zezwolić mojej stacji roboczej na wysyłanie poleceń z powrotem do serwera przez niego?SSH z serwerem za firewallem

Mam spojrzał na tunelowanie/tunelowania odwrotnego, ale te wydają się być portowe rozwiązania spedycyjne, które nie będą działać jako firewall odrzuca wszystkie połączenia na wszystkich portach.

Idealnie chciałabym zrobić to w Ruby (za pomocą Net :: SSH gem) tak, że zamiast otwierania nowego połączenia jak:

Net::SSH.start('host', 'user', :password => "password") 

mogłem jakoś powiązać z istniejącym tunelu.

Dzięki!

Odpowiedz

25

Jest to dość proste, jeśli masz kontrolę nad serwerem. Dam wersję wiersza poleceń, i że można pracować w dowolnym ramach chcesz:

server$ ssh -R 9091:localhost:22 client.example.egg 

client$ ssh -p 9091 localhost 

Serwer ustanawia połączenie z pierwszym klientem, który rozpoczyna nasłuch na „R” koniec Emote (czyli klient) na porcie 9091 (coś, co właśnie wymyśliłem) i przekazuje te połączenia do localhost:22, czyli do samego serwera ssh.

Następnie klient musi tylko podłączyć do portu własnej lokalnej 9091, który jest przejrzysty przekazany do serwera ssh serwera.

to zwykle siać spustoszenie do sprawdzania klucza publicznego (i bezpieczeństwa przylegającej!), Bo klient ssh klienta nie wie, że localhost:9091 jest taka sama jak server:22. Jeśli twoim klientem jest Putty, masz możliwość podania gdzieś "prawdziwej" nazwy serwera, aby można było poprawnie sprawdzić dane uwierzytelniające.

+0

Czy istnieje sposób można ewentualnie wieloznaczny, który postać localhost. Zmienia się mój adres IP i chcę zawsze mieć dostęp do ssh na serwerze. Mam już skonfigurowany program dns – MichaelH

+0

@MichaelH: Nie jestem pewien, czy rozumiem. Nie możesz utrzymywać połączeń TCP, jeśli adres IP jednego z peerów się zmieni ... –

+0

czy możemy też tunelować http przez to? – Will

0

Jeśli nie możesz utworzyć (i utrzymywać) tunelu z hosta, z którym chcesz się połączyć (co pozwoli ci połączyć się przez ten tunel), nie, nie możesz. Na tym polega zapora ogniowa: zapobiegaj nieautoryzowanemu dostępowi do sieci.

Jednak zapora nie powinien zablokować tunel, chociaż to zależy jak dokładnie tunelu udało. Tunel przekierowania portów skonfigurowany z użyciem ssh's tunneling features spowoduje przekierowanie firewalla. Może to jednak spowodować problemy z administratorem sieci zdalnej.

W związku z tym musisz porozmawiać z administratorem sieci, aby rozładować reguły zapory sieciowej, aby to zrobić bez potrzeby tunelowania, lub przynajmniej uzyskać autoryzację na tunel.

Powiązane problemy