Lo posible depende de lo que permita el firewall.
Si el firewall permite el tráfico arbitrario en el puerto 443
Algunos cortafuegos toman la salida simple y permiten cualquier cosa en el puerto 443. Si ese es el caso, la forma más fácil de llegar a su servidor doméstico es hacer que escuche las conexiones SSH en el puerto 443. Si su máquina está directamente conectada a Internet, simplemente añadir Port 443
a /etc/ssh/sshd_config
, o /etc/sshd_config
justo por debajo de la línea que dice Port 22
. Si su máquina está detrás de un enrutador / firewall que redirige las conexiones entrantes, haga que redirija las conexiones entrantes al puerto 443 al puerto 22 de su servidor con algo como
iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22
dónde wan0
está la interfaz WAN en su enrutador y 10.1.2.3 es la dirección IP de su servidor en su red doméstica.
Si desea permitir que su servidor doméstico escuche tanto las conexiones HTTPS como las conexiones SSH en el puerto 443, es posible: el tráfico SSH y HTTPS se puede distinguir fácilmente (en SSH, el servidor habla primero, mientras que en HTTP y HTTPS, el cliente habla primero). Consulte http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html y http://wrouesnel.github.io/articles/Setting%20up%20sshttp/ para obtener tutoriales sobre cómo configurar esto con sshttp y también SSH en el puerto 80 o 443 mientras el servidor web (nginx) se ejecuta en estos puertos
Si tiene un proxy web que permite hacer túneles CONNECT
Algunos cortafuegos bloquean todas las conexiones salientes, pero permiten navegar por la web a través de un proxy que permite que el método HTTPCONNECT
perfore efectivamente un agujero en el cortafuegos. El CONNECT
método puede estar restringido a ciertos puertos, por lo que es posible que deba combinar esto con la escucha en el puerto 443 como se indicó anteriormente.
Para hacer que SSH vaya a través del proxy, puede usar una herramienta como sacacorchos . En su ~/.ssh/config
, agregue una ProxyCommand
línea como la siguiente, si su proxy web es http://web-proxy.work.example.com:3128
:
Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p
Envolviendo SSH en HTTP (S)
Algunos firewalls no permiten el tráfico SSH, incluso en el puerto 443. Para hacer frente a estos, debe disfrazar o hacer un túnel SSH en algo que el firewall permita. Consulte http://dag.wiee.rs/howto/ssh-http-tunneling/ para obtener un tutorial sobre cómo hacer esto con proxytunnel .