WSL SSH setup


Jacob Xie published on
2 min, 213 words

Categories: Doc

Enable OpenSSH for Windows

Run PowerShell as an Administrator:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Install server or client:

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~

Start and configure OpenSSH server:

# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."

Enable OpenSSH for WSL2

Install openssh-server:

sudo apt install openssh-server

Enable the ssh service:

sudo systemctl enable --now ssh

Final Step

Proxy jumping:

ssh -J <windows_host_username>@<ip_of_your_windows_pc> <wsl_username>@localhost