O que é possível depende do que o firewall permite.
Se o firewall permitir tráfego arbitrário na porta 443
Alguns firewalls seguem o caminho mais simples e permitem qualquer coisa na porta 443. Se esse for o caso, a maneira mais fácil de acessar seu servidor doméstico é fazê-lo ouvir conexões SSH na porta 443. Se sua máquina estiver diretamente conectada à Internet, basta adicionar Port 443
a /etc/ssh/sshd_config
ou /etc/sshd_config
logo abaixo da linha que diz Port 22
. Se sua máquina estiver protegida por um roteador / firewall que redireciona as conexões de entrada, redirecione as conexões de entrada para a porta 443 para a porta 22 do 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
está 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ê deseja permitir que o 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 (no SSH, o servidor fala primeiro, enquanto no HTTP e HTTPS, o cliente fala primeiro). Consulte http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html e http://wrouesnel.github.io/articles/Setting%20up%20sshttp/ para obter tutoriais sobre como definir isso com sshttp e também tenha SSH na porta 80 ou 443 enquanto o servidor da web (nginx) estiver sendo executado nessas portas
Se você tiver um proxy da Web que permita o tunelamento do CONNECT
Alguns firewalls bloqueiam todas as conexões de saída, mas permitem navegar na Web por meio de um proxy que permite que o método HTTPCONNECT
efetivamente faça um furo no firewall. O CONNECT
método pode estar restrito a determinadas portas, portanto, você pode precisar combiná-lo 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 ProxyCommand
linha 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
Agrupando SSH em HTTP (S)
Alguns firewalls não permitem tráfego SSH, mesmo na porta 443. Para lidar com isso, é necessário disfarçar ou encapsular o SSH em algo que o firewall permita. Consulte http://dag.wiee.rs/howto/ssh-http-tunneling/ para obter um tutorial sobre como fazer isso com proxytunnel .