如何将WSL作为ssh服务器

发布时间 2023-09-13 20:31:40作者: 日月久照

配置WSL

我本人使用的WSL发行版为Ubuntu22.04,暂时不了解其他系统如何配置

这里我们假设大家的WSL上都安装了ssh服务器。在wsl运行如下指令,启动ssh服务器

sudo service ssh start

在有的系统上可能是

sudo service sshd start

用以下指令查看ssh的运行情况

sudo service ssh status

启动ssh后,可以使用ifconfig查看WSL的IP地址,如下

我们可以先尝试在主机上用ssh登录WSL,比如在这里就是

ssh username@172.23.83.244

如果能够连接上,那么再去配置windows,否则请先检查原因,常见原因可能是防火墙阻止了和WSL的链接。

配置windows端口转发

在windows上配置端口转发,将连接到windows上的ssh连接转发到wsl。这里的主要问题是,wsl每次启动都会重新分配IP地址,所以端口转发也需要动态的去配置。

首先我们让wsl每次启动的时候都将自己的ip地址写入到一个文件里方便脚本使用,具体方法是:将如下命令加入到/etc/profile这个文件中

ifconfig eth0 | grep "inet " | awk "{print $2}" > /mnt/c/Users/UserName/Desktop/wslip.txt

这样每次WSL启动的时候,都会将它的ip地址写入/mnt/c/Users/UserName/Desktop/wslip.txt这个文件中,可以修改文件地址。如果想要了解命令具体的原理,可以查询linux管道,linux重定向这两个概念和ifconfig,grep,awk这几个命令的说明。

然后再写一个批处理文件设置端口转发,内容如下

set /P wslip=<C:\Users\UserName\Desktop\wslip.txt
echo %wslip%
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=%wslip%
netsh interface portproxy show all
pause

接下来运行这个批处理文件就能设置好端口转发了。

结束

完成了以上两个步骤,理论上就可以通过windows主机的ip地址访问wsl上的ssh服务器了,但是这中间还可能会出现防火墙拦截,windows准入准出规则等问题。由于我没有遇到,就不详细论述了,以免误人子弟。如果出现了这些问题,可以自行查询资料进行参考