先解释一下WSL的网络,作为子系统的Ubuntu Linux和Windows主系统的IP是一样的。如果在Linux上搭建了Nginx服务器,那么在Windows上的浏览器上输入localhost是可以访问Nginx服务的。如果在Linux上运行netstat -nlp是不会看到任何端口服务的。在Linux上启用端口服务的时候,Windows系统会弹出窗口,询问是否允许相关端口访问。
WSL上的Ubuntu默认安装了openssh-server,也就是ssh服务的软件。但是,这个软件的配置是不完整的,如果启用服务,会报缺失几个密钥文件。为了解决这个问题,我们需要重新安装openssh-server:
$ sudo apt remove openssh-server
$ sudo apt install openssh-server
重新安装完还不行,因为WSL上的Ubuntu的SSH服务配置默认不允许密码方式登录,我们需要改配置:
$ sudo vi /etc/ssh/sshd_config
注意,要修改的文件是sshd_config,而不是ssh_config。两个文件都是存在的。
找到PasswordAuthentication no一行,把no改为yes,保存退出,启动ssh服务:
$ sudo service ssh start
如果之前调试已经启动过ssh服务,则使用重启命令:
$ sudo service ssh restart
此时,我们可以在Ubuntu的Bash下连接自己测试,也可以用Windows的PowerShell连接Ubuntu来测试,命令都是:
$ ssh username@localhost
username要替换称安装WSL Ubuntu时输入的用户名。
如果要在其它机器上访问,需要查找本机IP,把localhost换成IP,那么同一子网(wifi路由器)下的机器也可访问Ubuntu里的服务。
随便提一下,如果是搭建Nginx服务就比SSH简单多了,执行下面命令安装后在浏览器访问localhost即可:
$ sudo apt install nginx
$ sudo service nginx start
评论