layout: post title: 'Restoring external (remote) WSL2 access' date: 2021-02-18 11:01
If you rely on external (remote) access to the Windows Subsystem for Linux (WSL2) you may have noticed that your manual port forwards have suddenly stopped working. Microsoft has started issuing WSL2 instances a randomized IP address on startup, which makes it difficult to reliably access services hosted in the Linux subsystem. However, it's still possible to probe the WSL2 instance on startup and open the appropriate ports using Powershell.
Most existing solutions rely on legacy ifconfig
, which has been deprecated in Ubuntu 20.04 (available in WSL2 via an in-place do-release-upgrade
) in favor of ip
.
Steps:
{% highlight powershell %} {% insert_git_code https://git.bryanroessler.com/bryan/scripts/raw/master/powershell/wsl2-firewall-rules.ps1 %} {% endhighlight %}
Create a startup new task in the Windows Task Scheduler:
powershell
-ExecutionPolicy Bypass C:\Users\Bryan\Path\To\wsl2-firewall-rules.ps1
Save the task and run it
You can use your .bashrc
in the WSL2 or simply append the following line to the beginning of your powershell task:
bash.exe -c "sudo /usr/sbin/service ssh start; sudo /usr/sbin/service unattended-upgrades start"
You can add or remove services as necessary. In order to be able to use root privileges without entering a password, you will need to edit the sudoers file using visudo
and adding the following lines:
bryan ALL = NOPASSWD: /usr/sbin/service start ssh
bryan ALL = NOPASSWD: /usr/sbin/service start unattended-upgrades
Enjoy unfettered remote access to your WSL2 services again!