如何在WSL(Windows Subsystem for Linux)上的Ubuntu配置SSH服务

admin 提交于 周二, 12/31/2019 - 23:37

先解释一下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

标签

添加新评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"汉语"