Ciò che è possibile dipende da ciò che il firewall consente.
Se il firewall consente il traffico arbitrario sulla porta 443
Alcuni firewall escono in modo semplice e consentono qualsiasi cosa sulla porta 443. In tal caso, il modo più semplice per raggiungere il server di casa è farlo ascoltare le connessioni SSH sulla porta 443. Se la tua macchina è direttamente connessa a Internet, semplicemente aggiungi Port 443
al /etc/ssh/sshd_config
o /etc/sshd_config
appena sotto la linea che dice Port 22
. Se la tua macchina si trova dietro un router / firewall che reindirizza le connessioni in entrata, fallo reindirizzare le connessioni in entrata sulla porta 443 sulla porta 22 del tuo server con qualcosa di simile
iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22
dove si wan0
trova l'interfaccia WAN sul router e 10.1.2.3 è l'indirizzo IP del server sulla rete domestica.
Se vuoi consentire al tuo server di casa di ascoltare sia le connessioni HTTPS che SSH sulla porta 443, è possibile - il traffico SSH e HTTPS può essere facilmente distinto (in SSH, il server parla per primo, mentre in HTTP e HTTPS, il client parla primo). Vedi http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html e http://wrouesnel.github.io/articles/Setting%20up%20sshttp/ per tutorial su come impostare questo con sshttp , e hanno anche SSH sulla porta 80 o 443 mentre webserver (nginx) è in esecuzione su queste porte
Se si dispone di un proxy Web che consente il tunneling CONNECT
Alcuni firewall bloccano tutte le connessioni in uscita, ma consentono la navigazione sul Web tramite un proxy che consente al metodo HTTPCONNECT
di perforare efficacemente un buco nel firewall. Il CONNECT
metodo potrebbe essere limitato a determinate porte, quindi potrebbe essere necessario combinarlo con l'ascolto sulla porta 443 come sopra.
Per far passare SSH tramite il proxy, è possibile utilizzare uno strumento come cavatappi . Nel tuo ~/.ssh/config
, aggiungi una ProxyCommand
riga come quella qui sotto, se il tuo proxy web è http://web-proxy.work.example.com:3128
:
Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p
Avvolgimento SSH in HTTP (S)
Alcuni firewall non consentono il traffico SSH, anche sulla porta 443. Per far fronte a questi, è necessario camuffare o tunnel SSH in qualcosa che il firewall lascia passare. Vedi http://dag.wiee.rs/howto/ssh-http-tunneling/ per un tutorial su come farlo con proxytunnel .