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 .