-
Open your wsl ubuntu terminal
-
install open-ssh server
sudo apt update sudo apt install openssh-server
-
Configure the ssh server:
sudo vim /etc/ssh/sshd_configPermitRootLogin no- disallows root login for securityPasswordAuthentication no- Set this toyesif you really would rather use password based authenticationPubkeyAuthentication yes- if you want to use key-based authentication (recommended)Port 2222- Windows ssh server already uses port 22, so we need to pick a different one.ListenAddress 0.0.0.0
-
Activate and start the ssh server:
sudo systemctl start ssh sudo systemctl enable ssh -
Set mirrored networking mode in
.wslconfig
You can find this file under C:\YourUsername\, if this does not exist, create it
```
[wsl2]
networkingMode=mirrored
```
- Restart wsl by shutting it down (
wsl --shutdown) and then starting it again (wsl)
By doing so, now your WSL instance and your windows machine will have the same ip address
Note: This exposes the SSH server to your local network
-
Generate new ssh keys on your remote machine by following this guide from GitHub
-
Add your keys to your wsl's user
~/.ssh/authorized_keys- Copy the contents of the public key you created in step 1.
- Run:
public_key_placeholder >> ~/.ssh/authorized_keys- make sure to replacepublic_key_placeholderwith the actual contents of the public key
-
[Optional] Add ssh config
- Edit your ssh config file:
vim ~/.ssh/config - Add the following config (make sure to replace placeholder values):
Host wsl_hostname_placeholder Hostname wsl_hostname_placeholder Port 2222 User wsl_user_placheolder UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa - Edit your ssh config file:
-
Now you can ssh to your wsl2 instance:
ssh wsl_hostname_placeholder- If you didn't add a ssh config, then you need specify those options:
ssh wsl_user_placheolder@wsl_hostname_placeholder -p 2222
- If you didn't add a ssh config, then you need specify those options: