首先使用默认的连接配置连接 WLS2 的 Ubuntu

WSL默认安装了SSH,但只是客户端,需要更新软件包并安装 SSH Server

sudo apt update && sudo apt upgrade -y
sudo apt install openssh-server

看一下配置有没有需要更改的:

sudo cat /etc/ssh/sshd_config
# 如果需要更改配置,使用 vim 进行修改
sudo vim /etc/ssh/sshd_config

创建 Keygen 并启动服务

sudo ssh-keygen -A 
sudo /usr/sbin/service ssh start

如果有需要,配置防火墙

默认只在 localhost 暴漏 22 端口,只能通过

ssh {wslusername}@localhost

想要远程访问,需要配置端口映射,将 localhost 上的22端口转发到想要访问的ip的某个端口上。比如我的其他电脑想通过 ssh {wslusername}@192.168.3.2 来访问,就需要创建到 192.168.3.2 的映射:

netsh interface portproxy add v4tov4 listenaddress=192.168.3.2 listenport=22 connectaddress=127.0.0.1 connectport=22
netsh interface portproxy show all

当然还需要放通防火墙。

我是在windows server上运行的,基本不关机。如果经常关机重启,还需要设置一下开机启动,以下脚本配置了 WSL 中的ssh服务的启动,以及端口映射。

REM sshd.bat
@ECHO off
setlocal

C:\Windows\System32\wsl.exe -e "sudo /usr/sbin/service ssh start"
C:\Windows\System32\netsh.exe interface portproxy add v4tov4 listenaddress=192.168.3.2 listenport=22 connectaddress=127.0.0.1 connectport=22
endlocal