步骤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