É possível o SSH através da porta 80?

19

Estou por trás de um firewall de rede que não me deixa ssh através da porta padrão. Por causa disso, não posso enviar nenhum branch bzr para o meu repositório. Eu gostaria de saber se é possível alguma forma de proxy do ssh através da porta 80 para que eu possa empurrar os galhos.

Ouvi dizer que saca-rolhas permite que você faça isso, mas não sei como fazer isso exatamente.

Se você conhece algum servidor proxy funcional que permite fazer isso, mencione-os.

    
por jokerdino 24.02.2012 / 04:44

5 respostas

18

Um bom firewall corporativo inspecionará o tráfego, independentemente da porta, portanto, alterar a porta talvez não funcione.

Se você tiver controle sobre o servidor e ainda quiser testá-lo, poderá alterar a porta sshd para a porta 80. Aviso Se você tiver algo mais em execução na porta 80 (no servidor) isso não funcionará e provavelmente significará que você perderá completamente o acesso SSH ao servidor!

Você precisará editar /etc/ssh/sshd_config e alterar Port para 80 . Então corra

sudo restart ssh

E, em seguida, conecte-se:

ssh [email protected] -p80

Seu caminho bzr seria parecido com: bzr+ssh://host:80/path/

Outro método é usar o WebDav. Isso deve contornar completamente o problema do firewall, porque tudo acontece na porta 80, mas exigirá que você execute o Apache e configure várias coisas:

  1. Obtenha o WebDav instalado
  2. Mova sua filial para o lugar certo
  3. Use o plug-in bzr-webdav para se conectar

Uma VPN pode ser uma opção, mas se ssh estiver bloqueada, esperaria que ela também fosse excluída.

Você pode querer apenas uma palavra com seus administradores de rede. Você precisa fazer algo e eles estão parando você. Se eles têm uma razão para bloquear ssh , é provável que eles vejam qualquer tentativa extrema de contorná-la de forma bastante negativa ...

Em suma, pode ser mais seguro falar com eles.

    
por Oli 24.02.2012 / 14:05
15

SSH através do proxy

Se o firewall permitir, você poderá executar o ssh em qualquer porta, mas isso exigirá que o servidor ssh esteja escutando nessa porta. É improvável que a porta 80 funcione, porque a maioria dos lugares que têm firewalls analisam o tráfego nessa porta e bloqueiam qualquer coisa que não seja HTTP. Mas a porta 443, que normalmente é a porta HTTPS, geralmente funciona, porque o SSH e o HTTPS se parecem muito com os softwares de filtragem, portanto, sua sessão SSH se parecerá com uma sessão HTTPS. (É possível distinguir HTTPS e SSH, então isso não funcionará se o firewall for sofisticado o suficiente.)

Se você tiver controle sobre o servidor, faça-o ouvir na porta 443 além de 22 (a porta ssh normal). Você pode configurar a porta em /etc/ssh/sshd_config : adicionar uma linha

Port 443

além do Port 22 que já deveria estar lá. Observe que isso pressupõe que o servidor ssh não seja também um servidor HTTPS. Se estiver, você precisará encontrar outra porta que o firewall permita usar ou encontrar outro servidor ssh (veja o encaminhamento abaixo).

Se você não precisa definir um proxy da Web no seu navegador da Web, tente se conectar diretamente:

ssh -p 443 myserver.example.com

Se isso funcionar, defina um alias em ~/.ssh/config :

Host myserver
HostName myserver.example.com
Port 443

Se você precisar definir um proxy da Web em seu navegador da web, diga ao ssh para percorrer o proxy. Instale o saca-rolhas . Defina um alias como este no seu ~/.ssh/config , onde http://proxy.acme.com:3128/ é o proxy que você usa para HTTPS para fora (substitua pelo nome do host e pela porta apropriados):

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

SSH sobre SSH

Se você puder acessar alguma máquina externa usando uma das técnicas acima, mas não a máquina em que está interessado, use-a para encaminhar uma conexão. Supondo que você pode ssh para uma máquina chamada mygateway e você deseja acessar o servidor SSH em mytarget , instale netcat-openbsd em mygateway (ou, se não estiver executando o Ubuntu, certifique-se de que ele tenha o comando nc ). Coloque isso no seu ~/.ssh/config :

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH para o Apache

Se o host ao qual você deseja se conectar já estiver executando o Apache e escutando na porta 443 e você tiver controle sobre esse host, será possível configurar esse Apache para aceitar conexões SSH e encaminhá-las. Veja Tunneling SSH sobre HTTP (S) .

    
por Gilles 27.02.2012 / 02:38
2

Se você não tiver controle sobre o servidor para alterar a porta SSH para a porta 80 ou se não puder usar SSH na porta 80 porque o firewall o impede de transferir esses dados pela porta 80, você pode tentar o TOR.

TOR é uma rede enorme. Seu computador se conecta a outro computador em algum lugar do mundo, esse computador se conecta a outro até chegar ao servidor SSH. Isso tudo é compatível com o firewall, acontece na porta 443 (que sua empresa não bloqueia, ou então ... bem, isso não é tão inteligente deles). É literalmente apenas um enorme proxy ou VPN, e também é criptografado. Dessa forma, você pode acessar qualquer host em qualquer porta (também o SSH de um servidor na porta 22).

Dê uma olhada online em www.torproject.org .

    
por Robbietjuh 24.02.2012 / 15:29
2

Eu sinto muito, eu tenho que jogar o advogado dos diabos.

No entanto, sei que provavelmente existe uma razão para fazer isso, por que o seu administrador de rede / firewall não abre a porta específica que você está procurando? Do ponto de vista da segurança, você quer correr o risco de que a inspeção na Web perca alguma coisa? Se estiver configurado para contornar a porta 80 para tráfego padrão e você estiver se colocando em perigo.

Concordo com algumas sugestões acima, onde, como um ponto a ponto, a VPN pode ser uma opção mais segura. Novamente, do ponto de vista da segurança, eu estaria interessado em saber a razão pela qual você está realmente ignorando as políticas de segurança e por que você não pode colocar seu servidor em um dmz ou backbone para acesso. Apenas eu. Boa sorte.

    
por Solarfinder 22.10.2012 / 21:33
2

Acabei de ler uma solução sofisticada aqui:

link

Você pode conectar o SSH na porta 80, mesmo que o servidor da sua casa também execute um servidor na porta 80.

Assumindo que o servidor doméstico execute o Apache. A ideia envolve habilitar o mod_proxy em seu servidor, restringindo-o a se conectar ao 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>

Agora você pode fazer um pedido de conexão HTTP para o host local e o servidor da Web estabelecerá um túnel para você. Você só precisa verificar se todo o tráfego passa pelo seu proxy:

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

Certifique-se de que as conexões localhost para o SSH não sejam privilegiadas (para evitar que estranhos entrem ...)

Isso deve funcionar se você estiver atrás de um roteador que permita apenas a saída da porta 80.

Se você estiver por trás de um proxy (para configurar o proxy em seu navegador para obter web), primeiro será necessário estabelecer um túnel para seu próprio host e, em seguida, emitir outra solicitação CONNECT dentro deste túnel para chegar ao seu host . Isso é mais sofisticado, você precisará usar 2 netcats para isso.

Tudo é possível, mas faça isso por sua conta e risco ...

ATUALIZAÇÃO:

Ou simplesmente, basta usar um aplicativo da Web que ofereça SSH por meio de um navegador. link

    
por Calmarius 29.04.2013 / 18:49

Tags