Normalmente dall’ambiente WSL è possibile accedere a servizi esterni, per esempio server web o accedre a sistemi remoti in SSH ma fare il contrario, ovvero accedere ai servizi che girano dentro l’ambiente WSL da un sistema che non sia quello che lo ospita è più difficile.
Una soluzione che ho trovaro qui permette di esporre un servizio da WSL verso la rete locale usando il port forwarding di Windows. Un’altra soluzione sarebbe docker che sotto sotto usa le stesse risorse ma questa si adatta di più alle mie abitudini.
Ho provato ad esporre il servizio SSH per accedre al sistema WSL da remoto.
Per prima cosa ho installato il servizio ssh nel sistema WSL che solitamente non è presente:
# apt install openssh-server
Poi, nel sistema Windows ospitante, ho aggiunto una regola di proxy tra la porta 22 di tutti gli indirizzi ipv4 verso l’indirizzo della scheda eth0 del sistema WSL:
> netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.22.132.2 connectport=22
In fone si aggiunge una regola al firewall di Windows che permette le connessioni alla porta tcp/22:
> New-NetFirewallRule -DisplayName "SSH 22" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22 -Profile Private
A questo punto quando mi collego in ssh da un sistema esterno vengo agganciato al server ssh del WSL. Se avessi attivo un servizio SSH nativo di windows, potrei comunque accedere via SSH al WSL impostando il proxy su una porta diversa dalla 22 e riuscirei ad usare entrambe le connessioni ai due sistemi matriosca contemporaneamente.