Some of the most devastating things that happen to you will teach you the most.

有些最打击你的事情反而教会你的东西越多。

重装原有SSH

sudo apt remove openssh-server
sudo apt install openssh-server

先解释一下WSL的网络,作为子系统的Ubuntu Linux和Windows主系统的IP是一样的。如果在Linux上搭建了Nginx服务器,那么在Windows上的浏览器上输入localhost是可以访问Nginx服务的。如果在Linux上运行netstat -nlp是不会看到任何端口服务的。在Linux上启用端口服务的时候,Windows系统会弹出窗口,询问是否允许相关端口访问。

WSL上的Ubuntu默认安装了openssh-server,也就是ssh服务的软件。但是,这个软件的配置是不完整的,如果启用服务,会报缺失几个密钥文件。为了解决这个问题,我们需要重新安装openssh-server:

重新安装完还不行,因为WSL上的Ubuntu的SSH服务配置默认不允许密码方式登录,我们需要改配置:

更改配置文件

sudo vim /etc/ssh/sshd_config

将以下配置复制到sshd_config配置文件

Port 2222   #设置ssh的端口号, 由于22在windows中有别的用处, 尽量不修改系统的端口号
PermitRootLogin yes # 可以root远程登录
PasswordAuthentication yes # 允许密码验证登录
AllowUsers sky # 远程登录时的用户名

重启sshd服务

sudo service ssh --full-restart

此时,我们可以在Ubuntu的Bash下连接自己测试,也可以用Windows的PowerShell连接Ubuntu来测试,命令都是一样的

测试连接

ssh username@localhost:2222 	# username为安装WSL Ubuntu时输入的用户名

如果要在其它机器上访问,需要查找本机IP,把localhost换成IP,那么同一子网(wifi、路由器)下的机器也可访问Ubuntu里的服务。

如果在其他机器上连接不成功看是不是Win10本地防火墙的2222端口没有放行,放行端口方法

防火墙->高级设置->入站规则->新建规则

端口->下一步

选择tcp 特定本地端口 2222

允许连接, 默认都选上, 下一步填个名字 完成

不出意外,就应该能连接成功了

顺便提一下,如果是搭建Nginx服务就比SSH简单多了,执行下面命令安装后在浏览器访问localhost即可:

sudo apt install nginx
sudo service nginx start

最新文章

  1. CWR Mobile简介
  2. PHP基础知识2
  3. 让webstorm支持avalon语法自动补全
  4. HTTP2.0的二进制分帧
  5. IIs配置文件存放路径
  6. Client Dependency学习
  7. WPF如何卸载U盘(弹出USB设备)
  8. C#_LINQ(LINQ to Entities)
  9. MFC内部结构剖析
  10. MysqL的root用户不允许远程连接
  11. AI 人工智能 探索 (四)
  12. 使用python操作InfluxDB
  13. shell:bash环境
  14. Retrofit 2.0 超能实践(一),okHttp完美支持Https传输
  15. web前端效率提升之浏览器与本地文件的映射-遁地龙卷风
  16. java中对类中成员的排序
  17. python3 安装 basemap 包(windows10)
  18. MongoDB高可用集群+MMS集群监控搭建
  19. 根据某个字段去重 根据另一个字段排序的一个SQL
  20. js callback 和 js 混淆

热门文章

  1. ESP8266 NONOS SDK学习
  2. K8S_三种Port区别总结
  3. Windows编程之线程
  4. 操作系统学习笔记10 | I/O、显示器与键盘
  5. LibTorch 自动微分
  6. 大家都在用MySQL count(*)统计总数,到底有什么问题?
  7. 使用Logstash把MySQL数据导入到Elasticsearch中
  8. shell下cat EOF中变量$处理
  9. DevExpress弹框、右键菜单、Grid的使用
  10. prettierrc格式化常用配置