È possibile SSH tramite la porta 80?


20

Sono protetto da un firewall di rete che non mi consente di accedere alla porta predefinita. Per questo motivo, non posso inviare alcun ramo bzr al mio repository. Vorrei sapere se è possibile in qualche modo eseguire il proxy di SSH attraverso la porta 80 in modo da poter spingere i rami.

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

Se conosci qualche server proxy funzionante che ti consente di farlo, ti preghiamo di menzionarli.


2
man sshrivela port: host: hostport. Quindi prova ssh 80:server.comcosì.
MarkovCh1,

Questo serve per impostare un tunnel tramite -L o -R. Quindi avresti bisogno di un'altra scatola per attraversarla.
Cesio

Risposte:


19

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

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

Dovrai modificare /etc/ssh/sshd_confige cambiare Portin 80. Quindi corri

sudo restart ssh

E poi connettiti:

ssh user@host -p80

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


Un altro metodo è utilizzare WebDav. Questo dovrebbe aggirare completamente il problema del firewall 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. Utilizzare il plug -in bzr-webdav per connettersi

Una VPN potrebbe essere un'opzione, ma se sshè bloccata, mi aspetto che anche questa sia esclusa.

Potresti semplicemente voler parlare con gli amministratori della tua rete. Devi fare qualcosa e ti stanno fermando. Se hanno un motivo per bloccare ssh, è probabile che vedranno ogni tentativo estremo di aggirarlo abbastanza negativamente ...

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


7
+1 per discutere delle tue esigenze con il tuo dipartimento IT. In molti ambienti, incluso il mio, questo tipo di attività sarebbe motivo di interruzione.
Pantera,

1
Inoltre, se vuole far ascoltare il server ssh su un'altra porta, potrebbe farlo ascoltare su entrambe le porte 22 e 80, avendo due Portlinee, con una per ogni porta nel /etc/ssh/sshd_configfile.
Azendale,

Eviterò di fare una lista (la lista è lunga e la discussione di alcuni degli articoli su di essa può diventare molto politica rapidamente), ma questa domanda copre molte situazioni oltre a quella di un dipendente che cerca di eludere una politica aziendale che è lealmente implementata da il reparto IT dell'azienda. Sono tutto per le persone che discutono delle loro esigenze lavorative con l'IT, ma questo non è sempre applicabile, e talvolta i dipartimenti IT rispondono anche con "Va bene, ma non stiamo cambiando nulla per adattarsi a te". Separatamente, è abbastanza plausibile che la porta 22 sia bloccata dalle VPN non lo sia, quindi penso che valga la pena provare.
Eliah Kagan,

@Panther Quindi alcune persone sarebbero ancora più felici di porre fine a quel regime aziendale.
NeverEndingQueue

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 luoghi con firewall analizza il traffico su quella porta e blocca tutto ciò che non è HTTP. Ma la porta 443, che normalmente è la porta HTTPS, spesso funziona, perché SSH e HTTPS si assomigliano molto al software di filtraggio, quindi la tua sessione SSH sembrerà una sessione HTTPS. (È possibile distinguere HTTPS e SSH, quindi non funzionerà se il firewall è abbastanza sofisticato.)

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

Port 443

oltre a Port 22quello dovrebbe già essere lì. Si noti che ciò presuppone che il server SSH non sia anche un server HTTPS. In tal caso, dovrai trovare un'altra porta che il firewall ti consente di utilizzare o per trovare un altro server SSH (vedi inoltro di seguito).

Se non è necessario impostare un proxy Web nel browser Web, è possibile provare a connettersi direttamente:

ssh -p 443 myserver.example.com

Se funziona, definisci un alias nel tuo ~/.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. Installare il cavatappi . Definisci un alias come questo nel tuo ~/.ssh/config, dove si http://proxy.acme.com:3128/trova il proxy che usi 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 a una macchina esterna con una delle tecniche sopra ma non alla macchina a cui sei interessato, usalo per inoltrare una connessione. Supponendo che tu possa usare ssh su una macchina chiamata mygatewaye vuoi raggiungere il server SSH mytarget, installare netcat-openbsd su mygateway(o, se non sta eseguendo Ubuntu, assicurati che abbia il nccomando). Metti questo nel tuo ~/.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 in ascolto sulla porta 443 e si ha il controllo su tale host, è possibile configurare questo Apache per accettare le connessioni SSH e inoltrarle. Vedi Tunneling SSH su HTTP (S) .


puoi anche usare nc invece di cavatappi per https, sì? stackoverflow.com/a/15577758/32453
rogerdpack

3

Ho appena letto una soluzione sofisticata qui:

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html

Puoi SSH home sulla porta 80 anche se il tuo server home esegue anche un server web sulla porta 80.

Supponendo che il server principale esegua Apache. L'idea prevede l'abilitazione di mod_proxy sul server, quindi la sua limitazione alla connessione 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 al localhost e il server web creerà un tunnel per te, devi solo assicurarti che tutto il traffico passi attraverso 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 estranei ...)

Questo dovrebbe funzionare se sei dietro un router che consente solo l'uscita 80.

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

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

AGGIORNARE:

O semplicemente, basta usare un'applicazione web che ti dia SSH tramite un browser. http://en.wikipedia.org/wiki/Web-based_SSH


2

Se non hai alcun controllo sul server per cambiare la porta SSH sulla porta 80 o se non puoi SSH sulla porta 80 perché il firewall ti impedisce di trasferire tali dati attraverso la porta 80, puoi provare TOR.

TOR è una rete enorme. 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. Tutto questo è compatibile con il firewall, accade 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, è possibile accedere a qualsiasi host su qualsiasi porta (anche SSH di un server sulla porta 22).

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


2

Mi dispiace, devo interpretare l'avvocato dei diavoli.

So che c'è probabilmente un motivo per farlo, tuttavia, perché il tuo amministratore di rete / firewall non apre la porta specifica che stai cercando? Dal punto di vista della sicurezza, vuoi correre il rischio che web-inspect manchi qualcosa? Se è configurato per bypassare la porta 80 per il traffico std e ti stai mettendo in pericolo.

Concordo con alcuni suggerimenti sopra, dove vpn può essere un'opzione più sicura. Ancora una volta, dal punto di vista della sicurezza, sarei interessato a conoscere il motivo per cui stai davvero bypassando le politiche di sicurezza e perché non puoi né mettere il tuo server in un dmz o backbone per l'accesso. Solo io. In bocca al lupo.


2
Non è sempre possibile parlare con gli amministratori di rete e gli amministratori di rete non sono sempre ragionevoli.
Jeremy Bicha,

Ad esempio, se sei seduto al bar, connesso al WiFi, ma l'amministratore ha un accesso limitato (e devi ancora connetterti ora).
old-ufo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.