步骤1:Windows安装WSL

安装方法请参考:windows使用WSL安装linux子系统

步骤2:WSL配置SSH

启动WSL后,使用:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get remove openssh-server # 重要,要卸载后重装
sudo apt-get install openssh-server 

然后在WSL中,修改ssh的配置,不能使用默认的22端口,因为会与Windows冲突:

cd /etc/ssh/
sudo cp sshd_config sshd_config.back # 备份配置文件
sudo vim sshd_config

注意这里不是ssh_config,因为sshd_config是服务器端的配置,就是别人连接你时,你的操作;而ssh_config是客户端的配置,就是你连接别人时你的操作

首先:添加这两项配置:

Port 2222 # 这个是链接WSL的端口
PasswordAuthentication yes
ListenAddress 0.0.0.0

然后保存并退出,运行命令:

sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key # 然后一路回车即可
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # 一路回车
sudo service ssh restart

最后,测试一下。在windows的电脑中使用:

netstat -aon|findstr "2222"

可以看到在监听中(LISTENING)的端口,是一个TCP的连接

然后在windows上尝试使用ssh链接:

ssh WSL服务器的用户名@127.0.0.1 -p 2222

如果可以连接,证明WSL的openssh服务正常

步骤3:配置网络访问WSL

在虚拟中使用:

sudo apt-get install net-tools
ifconfig

可以看到虚拟机的地址是:172.20.157.220
在这里插入图片描述
使用管理员权限在windows中运行power shell,运行:

netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=172.20.157.220

这行代码的目的是把端口从WSL中隐射到主机上,否则会出现:connected refuse

步骤4:开启Windows网络服务

在控制面板,搜索启用或关闭Windows功能,然后在打开的界面中把Internet Information Services的三个全部勾选上
在这里插入图片描述

然后粗暴的把windows防火墙先关闭,然后在Windows访问:

ssh WSL服务器的用户名@192.168.xxx.xxx -p 2222

这个192.168.xxx.xxx是windows在内网中的地址,如果可以连接成功,证明网络访问是OK的

步骤5:配置Windows防火墙

打开windows Definder的高级设置:

  • 点击左侧“入站规则”
  • 点击右侧“新建规则”
  • 选择“端口”
  • 选择"TCP"
  • 选择“特定本地端口”,并设定值为2222(与之前配置端口映射时的本机端口一致即可)

然后一路下一步,配置完成后即可在局域网里用任何设备访问:

ssh WSL服务器的用户名@192.168.xxx.xxx -p 2222
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐