E 'possibile SSH attraverso la porta 80?

19

Sono dietro un firewall di rete che non mi lascia passare attraverso la porta predefinita. Per questo motivo, non posso trasferire alcun ramo bzr al mio repository. Mi piacerebbe sapere se è possibile in qualche modo proxy il ssh attraverso la porta 80 in modo da poter spingere i rami.

Ho sentito che cavatappi ti consente di farlo ma non sono sicuro di come farlo esattamente.

Se conosci qualche server proxy funzionante che ti consente di farlo, per favore menzionalo.

    
posta jokerdino 24.02.2012 - 04:44
fonte

5 risposte

17

Un buon firewall aziendale ispezionerà il traffico indipendentemente dalla porta, quindi la modifica della porta potrebbe non funzionare.

Se hai il controllo sul server, e vuoi ancora provarlo, puoi cambiare la porta sshd sulla porta 80. Avviso Se hai qualcos'altro in esecuzione sulla porta 80 (sul server) questo non funzionerà e probabilmente significherà perdere completamente l'accesso SSH al server!

Dovrai modificare /etc/ssh/sshd_config e cambiare Port in 80 . Quindi esegui

sudo restart ssh

E quindi connetti:

ssh user@host -p80

Il tuo percorso bzr sarebbe quindi simile a qualcosa: bzr+ssh://host:80/path/

Un altro metodo è usare WebDav. Questo dovrebbe aggirare il problema del firewall completamente perché tutto accade sulla porta 80 ma richiederà di eseguire Apache e impostare una serie di cose:

  1. Ottieni WebDav installato
  2. Sposta il tuo ramo nel posto giusto
  3. Utilizza il bzr-webdav plug-in per connettere

Una VPN potrebbe essere un'opzione ma se ssh è bloccato, mi aspetto che sia escluso anche.

Potresti semplicemente voler avere una parola con i tuoi amministratori di rete. Devi fare qualcosa e ti stanno fermando. Se hanno un motivo per bloccare ssh , è probabile che vedranno tutti i tentativi estremi di eluderlo in modo abbastanza negativo ...

In breve, potrebbe essere più sicuro parlare con loro.

    
risposta data Oli 24.02.2012 - 14:05
fonte
15

SSH tramite il proxy

Se il firewall lo consente, è possibile eseguire ssh su qualsiasi porta, ma ciò richiede che il server ssh sia in ascolto su quella porta. È improbabile che la porta 80 funzioni, perché la maggior parte dei posti con firewall analizzano il traffico su quella porta e bloccano tutto ciò che non è HTTP. Ma la porta 443, che normalmente è la porta HTTPS, spesso funziona, perché SSH e HTTPS sembrano molto simili ai software di filtraggio, quindi la sessione SSH sarà simile a una sessione HTTPS. (È possibile distinguere tra HTTPS e SSH, quindi non funzionerà se il firewall è abbastanza sofisticato.)

Se hai il controllo sul server, fallo ascoltare sulla porta 443 oltre a 22 (la normale porta ssh). Puoi configurare la porta in /etc/ssh/sshd_config : aggiungi una linea

Port 443

oltre al Port 22 che dovrebbe già essere presente. Si noti che ciò presuppone che il server ssh non sia anche un server HTTPS. Se lo è, dovrai trovare un'altra porta che il firewall ti consente di utilizzare o trovare un altro server ssh (vedi l'inoltro in basso).

Se non hai bisogno di impostare un proxy web nel tuo browser web, puoi provare a connetterti direttamente:

ssh -p 443 myserver.example.com

Se funziona, definisci un alias in ~/.ssh/config :

Host myserver
HostName myserver.example.com
Port 443

Se è necessario impostare un proxy Web nel browser Web, indicare a ssh di passare attraverso il proxy. Installa cavatappi . Definisci un alias come questo in ~/.ssh/config , dove http://proxy.acme.com:3128/ è il proxy che utilizzi per HTTPS all'esterno (sostituisci con il nome host e la porta appropriati):

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

SSH su SSH

Se riesci ad accedere ad alcuni computer esterni con una delle tecniche di cui sopra ma non alla macchina che ti interessa, usa quella per inoltrare una connessione. Supponendo che tu possa ssh su una macchina chiamata mygateway e vuoi raggiungere il server SSH su mytarget , installa netcat-openbsd su mygateway (o, se non è in esecuzione Ubuntu, assicurati che abbia il comando nc ). Metti questo nella tua ~/.ssh/config :

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH ad Apache

Se l'host a cui si desidera connettersi sta già eseguendo Apache e sta ascoltando sulla porta 443 e si ha il controllo su quell'host, è possibile impostare Apache per accettare le connessioni SSH e inoltrarle. Vedi Tunneling SSH su HTTP (S) .

    
risposta data Gilles 27.02.2012 - 02:38
fonte
2

Se non si ha alcun controllo sul server per cambiare la porta SSH sulla porta 80 o se non è possibile SSH sulla porta 80 poiché il firewall impedisce all'utente di trasferire tali dati attraverso la porta 80, è possibile provare TOR.

TOR è un'enorme rete. Il tuo computer si connette a un altro computer da qualche parte nel mondo, quel computer si connette a un altro fino a raggiungere il server SSH. Questo è tutto compatibile con il firewall, avviene sulla porta 443 (che la tua azienda non blocca, oppure ... beh, non è così intelligente da parte loro). È letteralmente solo un enorme proxy o VPN, ed è anche crittografato. In questo modo, puoi accedere a qualsiasi host su qualsiasi porta (anche SSH di un server sulla porta 22).

Dai un'occhiata online su www.torproject.org .

    
risposta data Robbietjuh 24.02.2012 - 15:29
fonte
2

Mi dispiace, devo fare l'avvocato dei diavoli.

So che probabilmente c'è una ragione per farlo, perché il tuo amministratore di rete / firewall non aprirà la porta specifica che stai cercando? Dal punto di vista della sicurezza, vuoi correre il rischio che a Web-Inspect mancherà qualcosa? Se è configurato per la porta di bypass 80 per il traffico std e ti stai mettendo in pericolo.

Sono d'accordo con alcuni suggerimenti sopra, dove come punto a punto vpn potrebbe essere un'opzione più sicura. Ancora una volta, da un punto di vista della sicurezza, sarei interessato a sapere il motivo per cui aggirate le politiche di sicurezza e perché non potete mettere il vostro server in dmz o backbone per l'accesso. Solo io. Buona fortuna.

    
risposta data Solarfinder 22.10.2012 - 21:33
fonte
2

Ho appena letto una soluzione sofisticata qui:

link

È possibile SSH home sulla porta 80 anche se il server di casa esegue anche un server web sulla porta 80.

Supponendo che il server principale esegua Apache. L'idea implica abilitare mod_proxy nel tuo server, quindi limitarlo a connettersi a 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>

Ora puoi fare una richiesta di connessione HTTP all'host locale e il server web stabilirà un tunnel per te, devi solo assicurarti che tutto il traffico attraversi il tuo proxy:

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

Assicurati che le connessioni localhost a SSH non siano privilegiate (per evitare di far entrare sconosciuti in ...)

Questo dovrebbe funzionare se sei dietro un router che consente solo la porta 80 out.

Se sei dietro un proxy (quindi devi impostare il proxy nel tuo browser per ottenere il web), devi prima stabilire un tunnel per il tuo host, quindi inviare un'altra richiesta CONNECT all'interno di questo tunnel per arrivare al tuo host . Questo è più sofisticato, dovrai usare 2 netcats per questo.

Tutto è possibile, ma fallo a tuo rischio ...

UPDATE:

O semplicemente, basta usare un'applicazione web che ti dà SSH tramite un browser. link

    
risposta data Calmarius 29.04.2013 - 18:49
fonte

Leggi altre domande sui tag