Czy jest możliwe SSH przez port 80?

19

Jestem za zaporą sieciową, która nie pozwala mi przejść przez domyślny port. Z tego powodu nie mogę przesyłać żadnych gałęzi bzr do mojego repozytorium. Chciałbym wiedzieć, czy możliwe jest jakoś proxy ssh przez port 80, więc mogę naciskać gałęzie.

Słyszałem, że korkociąg pozwala to zrobić, ale nie jestem pewien, jak to zrobić dokładnie.

Jeśli znasz jakiś działający serwer proxy, który pozwala to zrobić, wspomnij o nich.

    
zadawane jokerdino 24.02.2012, 04:44
źródło

5 odpowiedzi

17

Dobra zapora korporacyjna będzie kontrolować ruch bez względu na port, więc zmiana portu może nie działać.

Jeśli masz kontrolę nad serwerem i nadal chcesz go wypróbować, możesz zmienić port sshd na port 80. Ostrzeżenie Jeśli masz coś jeszcze działającego na porcie 80 (na serwerze) to nie zadziała i prawdopodobnie będzie oznaczać, że całkowicie stracisz dostęp SSH do serwera!

Musisz edytować /etc/ssh/sshd_config i zmienić Port na 80 . Następnie uruchom

sudo restart ssh

A następnie połącz:

ssh user@host -p80

Twoja ścieżka bzr będzie wyglądać mniej więcej tak: bzr+ssh://host:80/path/

Inną metodą jest użycie WebDav. To powinno całkowicie omijać problem zapory, ponieważ wszystko dzieje się na porcie 80, ale będzie wymagało uruchomienia Apache i skonfigurowania wielu rzeczy:

  1. Zainstaluj WebDav
  2. Przenieś swój oddział we właściwe miejsce
  3. Użyj wtyczki bzr-webdav do połączenia

VPN może być opcją, ale jeśli ssh jest zablokowany, spodziewam się, że również zostanie wykluczony.

Może chcesz po prostu zamienić słowo z administratorami sieci. Musisz coś zrobić i zatrzymują cię. Jeśli mają powód do zablokowania ssh , prawdopodobnie zobaczą wszelkie ekstremalne próby obejścia go dość negatywnie ...

Krótko mówiąc, bezpieczniej byłoby z nimi porozmawiać.

    
odpowiedział Oli 24.02.2012, 14:05
źródło
15

SSH przez proxy

Jeśli zapora ogniowa pozwala, możesz uruchomić ssh do dowolnego portu, ale to wymaga od nas słuchania serwera ssh na tym porcie. Port 80 raczej nie zadziała, ponieważ większość miejsc posiadających zapory ogniowe analizuje ruch na tym porcie i blokuje wszystko, co nie jest HTTP. Ale port 443, który zwykle jest portem HTTPS, często działa, ponieważ SSH i HTTPS wyglądają bardzo podobnie do oprogramowania filtrującego, więc twoja sesja SSH będzie wyglądać jak sesja HTTPS. (Możliwe jest rozróżnienie HTTPS i SSH, więc to nie zadziała, jeśli zapora jest wystarczająco zaawansowana.)

Jeśli masz kontrolę nad serwerem, ustaw go na porcie 443 oprócz 22 (normalny port ssh). Możesz skonfigurować port w /etc/ssh/sshd_config : dodaj linię

Port 443

oprócz Port 22 , które powinno już tam być. Zauważ, że zakłada to, że serwer ssh nie jest również serwerem HTTPS. Jeśli tak, powinieneś znaleźć inny port, z którego może korzystać zapora lub znaleźć inny serwer ssh (patrz przekazywanie poniżej).

Jeśli nie musisz ustawiać proxy internetowego w przeglądarce internetowej, możesz spróbować połączyć się bezpośrednio:

ssh -p 443 myserver.example.com

Jeśli to działa, zdefiniuj alias w ~/.ssh/config :

Host myserver
HostName myserver.example.com
Port 443

Jeśli musisz ustawić serwer proxy w swojej przeglądarce internetowej, powiedz ssh, aby przejść przez proxy. Zainstaluj korkociąg . Zdefiniuj alias taki jak ten w ~/.ssh/config , gdzie http://proxy.acme.com:3128/ jest proxy używanym przez HTTPS na zewnątrz (zamień na właściwą nazwę hosta i port):

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH przez SSH

Jeśli możesz dostać się do jakiejś zewnętrznej maszyny za pomocą jednej z powyższych technik, ale nie do maszyny, którą jesteś zainteresowany, użyj jej do przekazania połączenia. Zakładając, że możesz ssh do maszyny o nazwie mygateway i chcesz osiągnąć serwer SSH na mytarget , zainstaluj netcat-openbsd na mygateway (lub, jeśli nie działa system Ubuntu, upewnij się, że posiada polecenie nc ). Umieść to w ~/.ssh/config :

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH do Apache

Jeśli hostem, z którym chcesz się połączyć, jest już uruchomiony Apache i nasłuchiwanie na porcie 443, i masz kontrolę nad tym hostem, możesz skonfigurować Apache do akceptowania połączeń SSH i przesyłania dalej. Zobacz Tunelowanie SSH przez HTTP (S) .

    
odpowiedział Gilles 27.02.2012, 02:38
źródło
2

Jeśli nie masz żadnej kontroli nad serwerem, aby zmienić port SSH na port 80 lub jeśli nie możesz SSH przez port 80, ponieważ zapora blokuje ci przesyłanie takich danych przez port 80, możesz spróbować TOR.

TOR to ogromna sieć. Twój komputer łączy się z innym komputerem w dowolnym miejscu na świecie, który łączy się z innym, dopóki nie dojdzie do serwera SSH. To wszystko jest przyjazne dla firewalla, dzieje się na porcie 443 (którego twoja firma nie blokuje, albo inaczej ... cóż, to nie jest takie mądre z nich). Jest to dosłownie wielki serwer proxy lub VPN, a także jest zaszyfrowany. W ten sposób można uzyskać dostęp do dowolnego hosta na dowolnym porcie (także SSH serwera na porcie 22).

Zobacz go online na stronie www.torproject.org .

    
odpowiedział Robbietjuh 24.02.2012, 15:29
źródło
2

Przykro mi, muszę grać adwokatów diabłów.

Wiem, że najprawdopodobniej istnieje ku temu powód, dlaczego administrator twojej sieci / zapory nie otworzy konkretnego portu, którego szukasz? Z punktu widzenia bezpieczeństwa, czy chcesz mieć szansę na to, że przeglądarka internetowa czegoś nie przeoczy? Jeśli jest skonfigurowany, aby ominąć port 80 dla ruchu std i narażasz się na szkodę.

Zgadzam się z kilkoma sugestiami powyżej, gdzie jako punkt do punktu VPN może być bezpieczniejszą opcją. Ponownie, z punktu widzenia bezpieczeństwa, chciałbym wiedzieć, dlaczego tak naprawdę obchodzisz zasady bezpieczeństwa i dlaczego nie możesz umieścić swojego serwera w dmz lub szkieletu dostępu. Tylko ja. Powodzenia.

    
odpowiedział Solarfinder 22.10.2012, 21:33
źródło
2

Właśnie przeczytałem tutaj wyrafinowane rozwiązanie:

link

Możesz włączyć SSH do domu na porcie 80, nawet jeśli twój serwer domowy również uruchamia serwer internetowy na porcie 80.

Zakładając, że serwer domowy uruchamia Apache. Pomysł zakłada włączenie mod_proxy na twoim serwerze, a następnie ograniczenie go do połączenia z localhost (proxy.conf):

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

Teraz możesz wysłać żądanie połączenia HTTP do hosta lokalnego, a serwer internetowy ustanowi dla ciebie tunel, musisz tylko upewnić się, że cały ruch przechodzi przez serwer proxy:

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

Upewnij się, że połączenia lokalne z SSH nie są uprzywilejowane (aby nie dopuścić do nieznajomości w ...)

To powinno działać, jeśli jesteś za routerem, który pozwala na wyjście tylko z portu 80.

Jeśli jesteś za serwerem proxy (musisz ustawić proxy w przeglądarce, aby uzyskać dostęp do sieci), musisz najpierw ustanowić tunel na swoim hoście, a następnie wydać kolejne żądanie CONNECT w tym tunelu, aby dostać się do hosta . Jest to bardziej wyrafinowane, do tego potrzebne będą 2 netcaty.

Wszystko jest możliwe, ale rób to na własne ryzyko ...

AKTUALIZACJA:

Lub po prostu użyj aplikacji internetowej, która daje ci SSH za pośrednictwem przeglądarki. link

    
odpowiedział Calmarius 29.04.2013, 18:49
źródło

Przeczytaj inne pytania na temat tagów