Como usar o ssh sobre http ou https?

36

Eu tenho um laptop cliente linux fedora21 atrás de um firewall corporativo (que permite acessar as portas http e https, mas não o ssh22) e tenho um servidor linux fedora21 em casa atrás do meu próprio roteador. A navegação com https funciona quando especifico o endereço IP público do meu servidor de origem (porque configurei meu roteador doméstico)

É possível ssh (shell remoto) para o meu servidor doméstico através da porta http / s?

Eu vi uma ferramenta chamada corkscrew . isso ajudaria?

opensshd e httpd são executados no servidor inicial. O que mais precisaria de configuração?

    
por MMM 16.03.2015 / 14:25

1 resposta

34

O que é possível depende do que o firewall permite.

Se o firewall permitir tráfego arbitrário na porta 443

Alguns firewalls fazem o caminho simples e permitem qualquer coisa na porta 443. Se for esse o caso, a maneira mais fácil de acessar seu servidor doméstico é fazer com que ele escute as conexões SSH na porta 443. Se sua máquina estiver conectada diretamente ao Internet, basta adicionar Port 443 a /etc/ssh/sshd_config ou /etc/sshd_config logo abaixo da linha que diz Port 22 . Se a sua máquina estiver atrás de um roteador / firewall que redireciona as conexões de entrada, faça-a redirecionar as conexões de entrada para a porta 443 para a porta 22 do seu servidor com algo como

iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22

onde wan0 é a interface WAN no seu roteador e 10.1.2.3 é o endereço IP do seu servidor na sua rede doméstica.

Se você quiser permitir que seu servidor doméstico ouça conexões HTTPS e SSH na porta 443, é possível - o tráfego SSH e HTTPS pode ser facilmente distinguido (em SSH, o servidor fala primeiro, enquanto em HTTP e HTTPS, o cliente fala primeiro). Consulte o link e o link para tutoriais sobre como configurar isso com sshttp , e também Ter SSH na porta 80 ou 443 enquanto o servidor web (nginx) está sendo executado nessas portas

Se você tiver um proxy da Web que permita o CONNECT tunneling

Alguns firewalls bloqueiam todas as conexões de saída, mas permitem a navegação na Web por meio de um proxy que permite o HTTP CONNECT método para efetivamente perfurar um buraco no firewall. O método CONNECT pode estar restrito a certas portas, então você pode precisar combinar isso com a escuta na porta 443 como acima.

Para fazer o SSH passar pelo proxy, você pode usar uma ferramenta como o saca-rolhas . No seu ~/.ssh/config , adicione uma linha ProxyCommand como a abaixo, se o seu proxy da Web for http://web-proxy.work.example.com:3128 :

Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p

Quebra automática de SSH em HTTP (S)

Alguns firewalls não permitem o tráfego SSH, mesmo na porta 443. Para lidar com isso, você precisa disfarçar ou encapsular o SSH em algo que o firewall permita. Veja link para um tutorial sobre como fazer isso com proxytunnel .

    
por 17.03.2015 / 01:49