WSL2安装Ubuntu

news/2025/3/25 4:04:06/文章来源:https://www.cnblogs.com/link233/p/18787928

本文是介绍如何使用任意一台Windows主机借助WSL2创建Ubuntu虚拟系统开放局域网内SSH连接的操作指南!

先决条件

  1. 拥有能够访问github.com的网络环境;
  2. 必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11版本;

安装WSL2

以管理员身份运行PowerShell输入:

wsl --install

会打印如下内容:

正在下载: 适用于 Linux 的 Windows 子系统 2.4.12
[============82.4%=====           ]

出现如下内容表示安装完成:

已安装 适用于 Linux 的 Windows 子系统 2.4.12。
正在安装 Windows 可选组件: VirtualMachinePlatform
<br>
部署映像服务和管理工具
版本: 10.0.26100.1150映像版本: 10.0.26100.3476启用一个或多个功能
[==================100.0%==================]
操作成功完成。
请求的操作成功。直到重新启动系统前更改将不会生效。
请求的操作成功。直到重新启动系统前更改将不会生效。

该命令自动完成以下操作:

  • 启用 适用于 Linux 的 Windows 子系统 和 虚拟机平台 功能;
  • 下载并安装最新 WSL 内核;
  • 设置默认版本为 WSL 2;
  • 安装默认 Linux 发行版(通常为 Ubuntu)。

然后重启计算机;

以管理员身份运行PowerShell输入如下内容验证安装:

wsl --status

打印如下内容表示安装成功:

默认版本: 2
当前计算机配置不支持 WSL1。
若要使用 WSL1,请启用“Windows Subsystem for Linux”可选组件。

安装Ubuntu

显示适合通过 'wsl --install' 安装的可用分发版列表;

wsl -l -o

这里选择的是 Ubuntu-24.04

wsl --install Ubuntu-24.04

安装好了之后系统会自动打开如下页面:

image

开始菜单会出现如下两个图标:
imageimage
建议都固定到“开始”屏幕,方便后续自定义配置和快速启动。

验证安装:

wsl -l -v

* 表示默认虚拟系统:

  NAME            STATE           VERSION<br>
`*` Ubuntu-24.04    Stopped         2<br>

启动 ubuntu:

wsl -d Ubuntu-24.04

打印如下内容表示启动成功,并且可以看到进入了 ubuntu 的工作目录:

Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)

如果计算机开了代理可以看到上方还打印了:

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

这个待会在配置网络时一并配置。

补充一个 wsl 的关闭命令:

wsl --shutdown


这里可以导出 `ubuntu` 系统文件备份,然后自定义系统文件的存放位置:
  1. 导出 tar 包备份:
    wsl --export Ubuntu-24.04 ubuntu-24.04.tar
    
  2. 在任意位置创建目录,这里我选择了 C:\opt\wsl2\Ubuntu-24.04
  3. 卸载掉原有的 ubuntu
    wsl --unregister ubuntu
    
  4. 导入备份包并指定文件存放位置:
    wsl --import Ubuntu-24.04 C:\opt\wsl2\Ubuntu-24.04 "C:\Users\BrainLawrence\Desktop\ubuntu-24.04.tar"
    
  5. 成功后目录新增了两个文件:
    image

如果后续安装了多个虚拟系统,可以执行如下命令切换默认虚拟系统:

wsl --set-default Debian

开放SSH

windows 的当前用户目录下(比如我的是 C:\Users\BrainLawrence),新建 .wslconfig 文件,并填写如下内容:

# Settings apply across all Linux distros running on WSL 2
[wsl2]
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
[experimental]
hostAddressLoopback=true

其中hostAddressLoopback 目前处于开发阶段,其作用是:默认情况下,loopback的只有127.0.0.1(i.e., localhost),并且强制loopback。

也就是说,在wsl2中开启的网络端口(例如通过8022开启ssh登录端口),会通过localhost映射到win11上,可以在win11宿主机使用ssh -p 8022 username@localhost登录,但是通过win11的局域网或公网IP是不能登录的。

将这个选项设置为true之后,就可以在宿主机使用局域网或公网IP通过8022端口直接进行wsl2的ssh登录

新增了配置文件之后,如果已经启动了虚拟机需要关闭重启:wsl --shutdown

通过 wsl -d Ubuntu-24.04 启动并进入 ubuntu 或者:

image

因为切换了默认的网络模式 NATMirrored,所以不再出现 wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。 这个提示;

输入命令:

hostname -I

获取到 ip(这里获取到 192.168.0.101,后续命令请根据自己的 ip 替换执行);

初始化root账号的密码(不要忘了保存备份):

passwd

安装ssh服务:

apt update
apt install openssh-server

修改下这个文件 /etc/ssh/sshd_config,取消掉Port的注释换一个端口并允许root通过密码登录(后续修改ssh服务端的配置都是修改它):

#Port 22
Port 2222
#PermitRootLogin prohibit-password
PermitRootLogin yes

启动并查看ssh服务的状态:

systemctl start ssh
systemctl status ssh

image

我们可以直接连一下自己看看配置是否生效:

ssh -p 2222 root@localhost

打印 Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64) 表示套娃成功😆,使用 exit 退出来;

接下来使用 windows 宿主机尝试连接:

 ssh -p 2222 root@localhost

如果连接成功,尝试使用 ip 连接(记得更换为自己的ip):

ssh -p 2222 root@192.168.0.101

如果连接成功表示之前对于 .wslconfig 文件里 hostAddressLoopback=true 的配置生效了🍻;

我们再找一个同个局域网(同一个wifi)的机器尝试连接系统:

ssh -p 2222 root@192.168.0.101

会发现报错:Operation timed out,这是因为Hypler-V默认的防火墙阻挡了访问;通过设置Hyper-V防火墙可以解决,官方文档提供了如下命令:

Set-NetFirewallHyperVVMSetting -Name ‘{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}’ -DefaultInboundAction Allow

image

再次连接就没问题了。

🎉🎉🎉以上就是使用WSL2创建Ubuntu虚拟系统并开放局域网内SSH连接的详细步骤了,希望本篇文章能够帮助到您。

❤️留个赞再走吧❤️

参考

  1. 【我自己的博客】:https://link233.vip/WSL2安装Ubuntu.html
  2. 【Microsoft】官方文档安装 WSL:https://learn.microsoft.com/zh-cn/windows/wsl/install
  3. 【二十一克阳光!】WSL 2.0中使用networkingMode=mirrored,解决docker转发和外部设备访问问题:https://blog.csdn.net/weixin_43897590/article/details/135869139
  4. 【Microsoft】官方文档使用镜像模式网络:https://learn.microsoft.com/zh-cn/windows/wsl/networking#mirrored-mode-networking

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904241.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工‘够好就行’智能(AGEI)就快来了!

比尔弗兰克斯 前言:本文作者的观点是在真正的通用人工智能(AGI)到来之前,一种“够好就行”的人工智能(AGEI)就已经足以引发我们原本担心 AGI 才会带来的重大社会变革、正面效益,甚至潜在危机。 换句话说: AI 不需要达到像人类一样全面智能的程度; 只要在足够多的任务上…

List集合--java进阶day09

1.List集合以下面的例子来解释存储有序和存储重复如上图,我们是怎么添加这些字符串的,打印的时候就是按照这个顺序打印的--存取有序 并且“张三”出现了两次,也存入了两次--存储重复 因为List有索引,所以该接口有关于索引的独特的api..1.remove注意事项 List有两个remove方…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

20244126 2024-2025-2 《python程序设计》实验一报告

课程:《Python程序设计》 班级:2441 姓名:马晓霞 学号:20244126 实验教师:王志强 实验日期:2025年3月23日 必修/选修:公选课 (一)实验内容 1.熟悉Python开发环境 2.练习Python运行,调试技能 3.编写技能,练习变量和类型、字符串、对象、缩进和注释等 4.编写一个猜数字…

1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!

Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开…

leetcode每日一题:判断一个括号字符串是否有效

题目 一个括号字符串是只由 ( 和 ) 组成的 非空 字符串。如果一个字符串满足下面 任意 一个条件,那么它就是有效的:字符串为 (). 它可以表示为 AB(A 与 B 连接),其中A 和 B 都是有效括号字符串。 它可以表示为 (A) ,其中 A 是一个有效括号字符串。给你一个括号字符串 s 和…

实验2c语言分支与循环基础应用编程

任务一:1 #include <stdio.h>2 #include <stdlib.h>3 #include <time.h>4 5 #define N 56 7 int main() {8 int number;9 int i; 10 11 srand(time(0)); // 以当前系统时间作为随机种子 12 for(i = 0; i < N; ++i) { 13 nu…

矿用人员违规闯入监控报警系统

矿用人员违规闯入监控报警系统,设置警戒预警功能,巷道正在行车时,当有行人闯入时,及时抓拍、识别现场违章入侵人员同时闪光警示和音箱报警提示禁止进入,在绞车运行期间人员误入斜巷能够及时报警,自动停止绞车运行。该系统做到绞车运行和行人的安全隔离,有力保障了煤矿斜…

工厂车间人员违规闯入禁区报警系统

工厂车间人员违规闯入禁区报警系统前端设备嵌入AI人体识别算法,对人员的检测、跟踪,实现对人体检测分析识别,实时预警周界区域内人员入侵事件。当有可疑人员进入监测范围内可对其自动识别,即对其抓拍并将当时图像传输到管理中心,在管理中心输出报警信号。工厂车间人员违规…

iis备份还原工具,想要备份iis有哪些工具可以实现?

想要备份IIS(Internet Information Services),可以使用多种专门的备份还原工具。以下是一些常用的IIS备份还原工具及其简要介绍:IISBackUp 功能:专注于备份和恢复IIS站点设置,包括网站配置文件、站点绑定信息、应用程序池设置、SSL证书和密钥信息等。 特点: 提供一种方便…

集合的通用遍历方法--java进阶day09

1.集合的三种通用遍历方法之前我们学习过集合的遍历方法,为什么这里还要再学呢? 这是因为,之前我们用的遍历方法使用了索引,但我们知道set接口的实现类的集合均无索引,所以我们要学习通用的遍历方法 2.迭代器遍历 1.迭代器 迭代器叫做Iterator,是一个接口,我们知道接口是…

安卓逆向:adb连接模拟器进行jeb动态调试

这篇文章的内容记录下我在各个文章搜索学习最后解决了安卓进行模拟器动态调试的方法。 参考的文章有: ADB:https://blog.csdn.net/Python_0011/article/details/132040387 ADB的使用https://blog.csdn.net/SM1555/article/details/112608576 Androidkiller:https://blog.csdn.…