news 2026/8/17 23:35:09

WSL2从安装到调优:打造高性能Windows-Linux开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WSL2从安装到调优:打造高性能Windows-Linux开发环境

1. 从“能用”到“好用”:为什么你的WSL2安装总是不对劲?

如果你在Windows上折腾过开发环境,大概率听说过WSL2。它不再是那个“玩具”般的兼容层,而是真正意义上,在Windows内核上原生运行的一个Linux发行版。听起来很美,对吧?但现实是,很多人照着官方文档或者一些“三步搞定”的教程走下来,要么卡在某个报错上,要么装完了发现网络不通、文件系统巨慢、或者根本启动不了。这感觉就像买了一台顶配电脑,结果发现电源线没插好。

问题出在哪?大多数教程只告诉你怎么“安装”,却没告诉你“为什么”要这么装,以及安装后如何“调校”到生产可用的状态。WSL2的安装,远不止是打开一个功能、下载一个发行版那么简单。它涉及到Windows系统层级的虚拟化支持、Linux内核的部署、网络与存储的桥接,以及一系列默认配置的优化。今天,我们不谈那些泛泛而谈的步骤,而是从一个资深开发者的视角,带你完整走一遍从零开始,把一个“能用”的WSL2,调教成一个“好用”甚至“爱不释手”的开发环境。我们会覆盖从BIOS设置、内核更新、到网络优化、文件系统性能调优、以及如何与Windows生态无缝集成的所有核心细节。

2. 安装前的“硬核”准备:避开90%的启动失败陷阱

很多人安装WSL2失败,第一步就栽了跟头。错误信息通常是“WSL2 无法启动,因为此计算机上未启用虚拟化”。这背后涉及的是CPU的硬件虚拟化支持,以及Windows系统的层层软件开关。我们得一层层剥开来看。

2.1 BIOS/UEFI中的虚拟化开关:硬件层面的第一道门

现代CPU(无论是Intel的VT-x还是AMD的AMD-V)都支持硬件虚拟化技术,但很多电脑出厂时,为了所谓的“兼容性”或“稳定性”,这个功能在主板固件(BIOS/UEFI)里是默认关闭的。这是WSL2依赖的Hyper-V虚拟化平台的基础。

如何进入BIOS/UEFI设置?这没有统一答案,取决于你的电脑品牌。常见的方式是在开机自检(POST)时狂按DelF2F10F12Esc键。对于Windows 10/11的新设备,更可靠的方法是:打开“设置” -> “更新和安全” -> “恢复” -> “高级启动”下的“立即重新启动”。重启后选择“疑难解答” -> “高级选项” -> “UEFI固件设置”。

进去后找什么?菜单名称五花八门,你需要寻找类似以下的关键词:

  • Intel Virtualization Technology(VT-x)
  • AMD SVM Mode
  • Virtualization Technology
  • VT-d(这是一个更高级的IO虚拟化技术,开启也无妨)

找到后,将其状态从Disabled改为Enabled。保存并退出(通常是F10)。这是最底层、最关键的一步,如果这里没开,后面所有操作都是徒劳。

2.2 Windows功能与组件:软件层面的三重保险

硬件虚拟化开启后,回到Windows,我们需要确保三个相关的Windows功能被启用。很多人只开了“适用于Linux的Windows子系统”,却漏了更关键的“虚拟机平台”。

  1. 启用“适用于Linux的Windows子系统”(WSL):这是运行Linux二进制文件的基础兼容层,WSL1和WSL2都需要它。可以通过PowerShell(管理员身份)运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

  2. 启用“虚拟机平台”(Virtual Machine Platform)这是WSL2的核心依赖,比Hyper-V更轻量,但提供了必需的虚拟化支持。这是很多人遗漏的一步,导致即使开启了WSL功能,也无法切换到WSL2。同样在PowerShell(管理员)中运行:dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

  3. (可选但推荐)启用“Hyper-V”:虽然WSL2的最小要求是“虚拟机平台”,但完整启用Hyper-V管理工具套件,能让你使用Hyper-V管理器进行更底层的查看和管理,并且在未来需要运行完整虚拟机时也更方便。启用命令:dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart

执行完上述命令后,必须重启电脑。这些更改涉及Windows内核,不重启无法生效。重启后,我们再进行下一步。

2.3 安装WSL2 Linux内核更新包

这是一个独立的、由微软提供的Linux内核镜像。Windows本身不包含Linux内核,这个更新包就是用来提供这个内核的。即使你从Microsoft Store安装Ubuntu,它也会提示你安装这个包。但手动提前安装,可以避免后续的兼容性问题。

直接访问微软官方WSL文档页面,找到“下载最新的WSL2 Linux内核更新包”链接,下载并安装一个名为wsl_update_x64.msi的文件。安装过程就是一路下一步。这一步确保了你的WSL2使用的是最新、最稳定的Linux内核,修复了许多早期版本的文件系统和网络性能问题。

3. 发行版安装与初始配置:选对版本,事半功倍

准备工作就绪,现在可以安装Linux发行版了。你有两个主要来源:Microsoft Store 和 命令行。它们各有优劣。

3.1 商店安装 vs 命令行导入:灵活性的抉择

Microsoft Store安装是最简单的方式。打开Microsoft Store,搜索“Ubuntu”(通常推荐22.04 LTS或24.04 LTS),点击安装即可。这种方式自动处理了所有路径和注册表关联。但缺点也很明显:你无法控制安装位置(默认在C:\Users\<用户名>\AppData\Local\Packages\...下,占用C盘空间),且版本更新受商店推送节奏影响。

命令行导入则提供了终极的灵活性。你可以从官方渠道(如 https://cloud-images.ubuntu.com/)下载任何你喜欢的发行版镜像(通常是.tar.gz格式的根文件系统),然后将其导入到任意你指定的位置。例如,你想把Ubuntu安装到D盘:

# 首先,将下载的Ubuntu根文件系统包(如 ubuntu-22.04-server-cloudimg-amd64-root.tar.gz)放到D盘 # 然后以管理员身份打开PowerShell wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\ubuntu-22.04-server-cloudimg-amd64-root.tar.gz

这条命令会在D:\WSL\Ubuntu2204目录下创建一个虚拟硬盘文件(ext4.vhdx)并解压系统。这种方式完美解决了C盘空间焦虑,并且你可以同时导入多个不同版本或不同发行版的系统。

3.2 首次启动与用户配置:避免“root陷阱”

无论哪种方式安装,第一次启动发行版时,都会进行初始化,解压文件并设置默认用户。这里有一个至关重要的细节:如果你通过Store安装并直接点击启动,系统会提示你创建新的UNIX用户名和密码。这个用户将被自动加入sudo组。

但如果你是通过wsl --import命令导入的,默认会以root用户身份启动。长期使用root用户是极其危险且不符合最佳实践的。你需要手动创建你的日常用户:

# 在WSL的bash中(此时是root) adduser yourusername # 按照提示设置密码和相关信息 usermod -aG sudo yourusername # 将新用户添加到sudo组

然后,你需要配置WSL默认以此用户登录。退出WSL,回到Windows PowerShell,执行:

# 将 <DistributionName> 替换为你的发行版名称,如 `Ubuntu-22.04` # 将 <Username> 替换为你刚创建的用户名 wsl --distribution <DistributionName> --user <Username>

为了让这个设置永久生效,你需要在WSL内部创建一个配置文件。在WSL中,编辑(或创建)/etc/wsl.conf文件:

[user] default=yourusername

下次启动WSL时,就会自动使用你指定的用户了。

3.3 设置WSL2为默认版本

确保所有新安装的发行版都默认使用WSL2。在PowerShell中运行:

wsl --set-default-version 2

对于已经安装的、但还在使用WSL1的发行版,你可以将其升级:

wsl --set-version <DistributionName> 2

你可以通过wsl -l -v命令来查看所有已安装发行版及其使用的WSL版本。

4. 网络与存储:打通任督二脉的关键调优

安装完成并能启动,只是万里长征第一步。要让WSL2真正融入你的工作流,网络互通和文件系统性能是两个必须解决的“痛点”。

4.1 解决“network is unreachable”与端口转发

WSL2采用了一种NAT(网络地址转换)的网络模式。这意味着WSL2实例运行在一个虚拟的、与主机Windows隔离的网络中。这带来了两个常见问题:

  1. 从WSL2内部无法ping通外部网络:这通常是因为Windows主机的防火墙规则、或者WSL2内部的DNS解析出了问题。首先尝试在WSL2中更新DNS配置:

    sudo bash -c 'echo -e "[network]\ngenerateResolvConf = false" > /etc/wsl.conf' sudo rm /etc/resolv.conf sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' sudo chattr +i /etc/resolv.conf' # 防止WSL自动覆盖

    如果问题依旧,检查Windows Defender防火墙是否阻止了vmmem(WSL2虚拟机进程)或Virtual Machine相关服务的出站连接。

  2. 从Windows无法直接访问WSL2中运行的服务:比如你在WSL2的Ubuntu里运行了一个Python Flask应用在127.0.0.1:5000,在Windows的浏览器里访问localhost:5000是连不上的。因为WSL2有自己的localhost。解决方案是端口转发。你需要让Windows知道,访问本机的某个端口时,应该把流量转发到WSL2的对应端口。

    一个强大且自动化的工具是netsh端口代理。但更优雅的方式是在WSL2启动时自动设置。你可以在Windows上创建一个PowerShell脚本,并在任务计划程序中设置,当WSL2启动时运行该脚本。脚本内容示例(转发WSL2的5000端口到Windows的5000端口):

    # 获取WSL2的IP地址 $wsl_ip = (wsl hostname -I).Trim() # 删除旧的转发规则(如果存在) netsh interface portproxy delete v4tov4 listenport=5000 listenaddress=0.0.0.0 # 添加新的转发规则 netsh interface portproxy add v4tov4 listenport=5000 listenaddress=0.0.0.0 connectport=5000 connectaddress=$wsl_ip # 打开Windows防火墙对应端口(如果防火墙开启) New-NetFirewallRule -DisplayName "WSL2 Port 5000" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow

    这样,你在Windows访问localhost:5000,请求就会被转发到WSL2内部。

4.2 文件系统性能:绕开“/mnt/c”的坑

WSL2允许你直接从Linux环境访问Windows文件,路径在/mnt/c/,/mnt/d/等。但是,这是一个巨大的性能陷阱!WSL2通过9P文件系统协议来挂载Windows驱动器,其I/O性能,特别是涉及大量小文件读写(如npm install,git status, 编译项目)时,会比在WSL2原生的Linux文件系统(即WSL2虚拟硬盘ext4.vhdx内部)慢上数十倍

黄金法则:将你的项目源代码、开发环境(如Node.js, Python虚拟环境)全部放在WSL2的Linux原生文件系统内。例如,放在~/projects/下,而不是/mnt/c/Users/...下。

那么如何在Windows下方便地编辑这些文件呢?这就需要用到VSCode的Remote - WSL扩展。安装此扩展后,你可以在Windows的文件资源管理器中右键点击WSL里的项目文件夹,选择“通过Code打开”,或者直接在VSCode里连接WSL。VSCode的服务器组件会自动安装在WSL内,编辑、调试的体验与在本地Windows无异,但文件操作却是在高性能的Linux文件系统上进行的。

4.3 内存与CPU资源限制

默认情况下,WSL2会贪婪地使用主机内存和CPU,这可能导致Windows主机本身卡顿。我们需要给它套上“缰绳”。在Windows用户目录下(C:\Users\<你的用户名>\)创建或编辑一个名为.wslconfig的文件:

[wsl2] # 限制WSL2最大可使用内存,例如8GB memory=8GB # 限制WSL2可使用的CPU核心数,例如一半 processors=4 # 设置交换文件大小(虚拟内存) swap=4GB # 将交换文件放在其他驱动器(可选) swapFile=D:\\wsl-swap.vhdx # 开启页面报告,有助于内存回收(Windows 11 Build 22000+) pageReporting=true # 关闭GUI支持(如果你不用WSLg) guiApplications=false # 关闭嵌套虚拟化(除非你需要在WSL2里再开虚拟机) nestedVirtualization=false

保存后,关闭所有WSL窗口,在PowerShell中执行wsl --shutdown来完全关闭WSL2,下次启动时配置生效。这个文件是全局配置,对所有WSL2发行版有效。

5. 开发环境一站式配置:以Ubuntu 22.04为例

假设我们选择Ubuntu 22.04 LTS作为我们的主力开发环境。安装完基础系统后,以下是一套经过优化的初始化脚本,涵盖了开发中最常见的需求。

5.1 系统更新与基础工具链

首先,更新软件源并升级所有包,然后安装一批不可或缺的基础工具:

sudo apt update && sudo apt upgrade -y sudo apt install -y \ build-essential \ # 编译工具链 (gcc, g++, make等) curl \ # 网络工具 wget \ # 下载工具 git \ # 版本控制 vim \ # 编辑器 htop \ # 进程监控 net-tools \ # 网络工具 (ifconfig, netstat) dnsutils \ # DNS工具 (dig, nslookup) software-properties-common \ # 方便添加PPA ca-certificates \ # SSL证书 gnupg \ # 加密工具 lsb-release \ # 系统版本信息 zip unzip \ # 压缩解压 tree \ # 目录树显示 jq \ # JSON处理 ssh \ # SSH客户端/服务端 tmux # 终端复用器

5.2 安装与配置Git

Git是开发者的空气。除了安装,更要合理配置:

git config --global user.name "Your Name" git config --global user.email "your.email@example.com" # 设置默认分支名为main git config --global init.defaultBranch main # 优化大仓库性能 git config --global core.preloadindex true git config --global core.fscache true # 设置更友好的颜色输出 git config --global color.ui auto # 设置推送方式为simple(最安全易懂) git config --global push.default simple # 安装git-lfs(如果需要管理大文件) curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt install -y git-lfs git lfs install

5.3 安装Node.js与npm(通过NodeSource)

Ubuntu自带的Node.js版本通常很旧。推荐使用NodeSource维护的仓库来安装最新的LTS版本:

# 安装NodeSource仓库脚本(以Node.js 20.x LTS为例) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs # 验证安装 node --version npm --version # (可选)安装yarn或pnpm作为替代包管理器 # 安装yarn npm install --global yarn # 安装pnpm curl -fsSL https://get.pnpm.io/install.sh | sh -

5.4 安装Python与pip(使用deadsnakes PPA获取最新版本)

Ubuntu 22.04自带Python 3.10。如果你需要其他版本(如3.11, 3.12),可以使用deadsnakes PPA:

# 添加deadsnakes PPA sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update # 安装Python 3.11和3.12(可以多版本共存) sudo apt install -y python3.11 python3.11-venv python3.11-dev python3.11-distutils sudo apt install -y python3.12 python3.12-venv python3.12-dev python3.12-distutils # 将python3命令链接到你想用的默认版本(例如3.11) sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 # 安装pip(推荐使用ensurepip) python3 -m ensurepip --upgrade # 或者使用get-pip.py curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 # 安装虚拟环境管理工具(推荐使用venv模块,它是标准库的一部分) # 使用示例:python3 -m venv myenv

5.5 安装Docker Engine inside WSL2

在WSL2中直接安装Docker Engine(而不是使用Docker Desktop for Windows),可以获得更纯粹、性能更好的容器体验,并且与Linux生产环境保持一致。

# 1. 卸载旧版本(如果有) sudo apt remove docker docker-engine docker.io containerd runc -y # 2. 安装依赖 sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release # 3. 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 4. 设置稳定版仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 5. 安装Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 6. 将当前用户加入docker组,避免每次都用sudo sudo usermod -aG docker $USER # 7. 启动Docker服务 sudo service docker start # 或者使用systemctl(如果WSL2支持) # sudo systemctl enable docker # sudo systemctl start docker # 8. 验证安装 docker --version docker run hello-world

重要提示:在WSL2中运行Docker,容器网络与WSL2实例在同一网络命名空间,这意味着从Windows访问容器服务,同样需要像前面提到的端口转发。或者,你可以继续使用Docker Desktop for Windows,并将其后端设置为WSL2(在Docker Desktop设置中勾选“Use the WSL 2 based engine”),这样Docker Desktop会帮你管理网络和守护进程,但容器运行时仍在WSL2中,性能更好。

6. 高级配置与故障排查:让环境坚如磐石

基础环境搭好后,还有一些高级配置能极大提升体验和稳定性。同时,我们也需要知道如何应对一些常见故障。

6.1 配置WSL2自动启动服务(Systemd支持)

默认情况下,WSL2不支持Systemd,这意味着许多需要Systemd管理的服务(如Docker, SSH服务器)无法自动启动。从WSL2的某个版本开始,微软提供了实验性的Systemd支持。要启用它,编辑WSL配置文件/etc/wsl.conf

[boot] systemd=true

保存后,在Windows PowerShell中执行wsl --shutdown关闭WSL,再重新启动。现在,你应该可以使用systemctl命令来管理服务了,例如sudo systemctl start docker

6.2 备份与迁移WSL2发行版

你的WSL2环境配置了这么多东西,一定要学会备份。WSL2提供了导出和导入功能,可以轻松实现备份、迁移或克隆。

导出(备份)一个发行版:

# 在PowerShell中执行 wsl --export <DistributionName> D:\Backup\my_ubuntu_backup.tar

这会创建一个包含整个发行版文件系统的tar包。

导入备份的发行版:

# 导入到一个新位置,并指定新发行版的名字 wsl --import MyUbuntuBackup D:\WSL\NewInstance D:\Backup\my_ubuntu_backup.tar

彻底卸载一个发行版:

# 首先,关闭它 wsl --terminate <DistributionName> # 然后,注销它(这会删除关联的虚拟硬盘文件!) wsl --unregister <DistributionName>

注意:从Microsoft Store安装的发行版,卸载(注销)后,其虚拟硬盘文件默认位于%LOCALAPPDATA%\Packages\<PackageName>\LocalState\下,名为ext4.vhdx。手动删除这个文件可以释放空间。而通过--import导入的,其虚拟硬盘就在你指定的目录下。

6.3 常见故障排查指南

  1. WSL2启动失败,错误代码 0x80070040 / 0x80070057

    • 检查点:确保BIOS中虚拟化已开启(见2.1节)。
    • 检查点:确保已启用“虚拟机平台”功能(见2.2节)。
    • 检查点:尝试在PowerShell(管理员)中重置WSL:wsl --shutdown然后wsl --update
  2. WSL2内网络完全不通

    • 检查点:在WSL2内运行cat /etc/resolv.conf,看nameserver是否指向一个奇怪的地址(如172.x.x.x)。如果是,按照4.1节的方法修复DNS。
    • 检查点:在Windows中,以管理员身份打开PowerShell,运行Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Select-Object Name, InterfaceDescription查看活动网卡。然后尝试暂时禁用第三方杀毒软件或防火墙。
  3. 文件系统操作极其缓慢(特别是在/mnt/c下)

    • 重申黄金法则:不要在/mnt/c下进行开发!将项目文件移到WSL2的Linux原生文件系统中(如~/)。
    • 如果必须访问Windows文件,可以尝试在/etc/wsl.conf中启用元数据选项,但这提升有限:
      [automount] enabled = true options = "metadata,umask=22,fmask=11"
  4. 内存占用过高,导致Windows卡顿

    • 配置.wslconfig文件,严格限制内存使用上限(见4.3节)。
    • 定期检查并清理WSL2内存:在WSL2中运行sudo echo 1 > /proc/sys/vm/drop_caches可以清理页面缓存(非必要勿频繁操作)。更根本的是重启WSL:在PowerShell中wsl --shutdown
  5. 无法在Windows资源管理器中直接访问WSL2文件

    • 在Windows文件资源管理器的地址栏直接输入\\wsl$\\wsl.localhost,即可看到所有运行的WSL2发行版,像网络驱动器一样访问其文件系统。这是最方便的方式。

7. 与Windows生态的深度集成:打造无缝工作流

WSL2的强大之处在于它与Windows的共生关系。配置得当,你可以获得近乎原生Linux的开发体验,同时享受Windows的GUI应用和办公生态。

7.1 在Windows Terminal中完美集成

Windows Terminal是管理WSL2的最佳终端。将其设置为默认终端,并为你的WSL2发行版创建一个漂亮的配置文件。

  1. 从Microsoft Store安装Windows Terminal。
  2. 打开Windows Terminal设置(JSON文件)。
  3. profiles->list数组中,找到你的WSL2发行版对应的配置项(通常已自动生成)。你可以对其进行深度定制:
    { "guid": "{你的发行版GUID}", "name": "Ubuntu-22.04", "commandline": "wsl.exe -d Ubuntu-22.04", // 指定发行版 "startingDirectory": "//wsl$/Ubuntu-22.04/home/yourusername", // 启动目录指向WSL2家目录 "fontFace": "Cascadia Code PL", // 使用等宽字体 "fontSize": 11, "colorScheme": "One Half Dark", // 选择喜欢的配色 "hidden": false, "icon": "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png" // Ubuntu图标 }
  4. 你还可以设置默认启动的配置文件,以及各种快捷键。

7.2 使用VSCode进行远程开发

这是WSL2开发体验的“杀手锏”。

  1. 在Windows上安装VSCode。
  2. 在VSCode扩展商店中搜索并安装“Remote - WSL”扩展。
  3. 在WSL2的终端中,进入你的项目目录,输入code .。VSCode会自动在WSL2环境中安装一个轻量级的服务器(VS Code Server),然后打开一个连接到WSL2的窗口。你所有的扩展、终端、调试器都在这个WSL2上下文中运行,但UI是Windows的VSCode。文件操作、插件运行都在Linux原生文件系统上,速度极快。

7.3 在WSL2中运行GUI应用(WSLg)

从Windows 10 Build 21364+ 和 Windows 11 开始,WSL原生支持运行Linux GUI应用(Wayland/X11),称为WSLg。

  1. 确保你的Windows版本支持,并且WSL2内核版本大于5.10.60.1。
  2. 基本上不需要额外配置。直接在WSL2中安装一个带GUI的应用,例如sudo apt install gedit,然后在WSL2终端里输入gedit,一个Linux风格的gedit文本编辑器窗口就会在Windows桌面上弹出。
  3. 剪贴板、音频、硬件加速(GPU)在多数情况下都能自动共享。这为运行一些Linux独有的图形工具或测试桌面应用提供了极大便利。

7.4 共享环境变量与SSH密钥

  • 环境变量:在WSL2中,你可以直接从Windows继承环境变量。在WSL2的shell配置文件中(如~/.bashrc~/.zshrc),添加export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0可以帮助一些老的X11应用找到显示服务器(WSLg下通常不需要)。更常见的需求是共享PATH,但通常不建议,保持环境隔离更清晰。
  • SSH密钥:这是最需要共享的。你可以在Windows上生成SSH密钥(使用Git Bash或PowerShell),然后将私钥(id_rsa)和公钥(id_rsa.pub)复制到WSL2的~/.ssh/目录下,并设置正确的权限(chmod 600 ~/.ssh/id_rsa)。更好的做法是使用Windows自带的OpenSSH客户端(ssh-agent服务),并在WSL2中配置转发。在WSL2的~/.bashrc中添加:
    # 使用Windows的ssh-agent export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock ss -a | grep -q $SSH_AUTH_SOCK if [ $? -ne 0 ]; then rm -f $SSH_AUTH_SOCK (setsid nohup socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/Windows/System32/OpenSSH/ssh-agent.exe" >/dev/null 2>&1 &) fi
    这样,你在Windows上添加的SSH密钥,在WSL2中也可以直接使用。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 23:32:42

优雅管理多个Ruby版本:frum global与local命令实战攻略

优雅管理多个Ruby版本&#xff1a;frum global与local命令实战攻略 【免费下载链接】frum A little bit fast and modern Ruby version manager written in Rust 项目地址: https://gitcode.com/gh_mirrors/fr/frum 如果你同时维护多个 Ruby 项目&#xff0c;一定经历过…

作者头像 李华
网站建设 2026/8/17 23:31:31

Cordis核心概念图解:Context、Fiber与Plugin的三体关系

Cordis核心概念图解&#xff1a;Context、Fiber与Plugin的三体关系 【免费下载链接】cordis Meta-Framework of Spatiotemporal Composability 项目地址: https://gitcode.com/GitHub_Trending/co/cordis Cordis 是一个面向**时空可组合性&#xff08;Spatiotemporal Co…

作者头像 李华
网站建设 2026/8/17 23:31:18

大麦自动抢票完整指南:从零配置到一次抢到心仪门票的实战教程

大麦自动抢票完整指南&#xff1a;从零配置到一次抢到心仪门票的实战教程 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 凌晨 10 点开票&#xff0…

作者头像 李华
网站建设 2026/8/17 23:27:01

零基础体验Kiwi在线Demo:30秒看懂韩语词性标注全过程

零基础体验Kiwi在线Demo&#xff1a;30秒看懂韩语词性标注全过程 【免费下载链接】Kiwi Kiwi(지능형 한국어 형태소 분석기) 项目地址: https://gitcode.com/gh_mirrors/kiwi1/Kiwi 想学韩语却总被复杂的词性分析劝退&#xff1f;本文为你带来韩语形态素分析器 Kiwi 的在…

作者头像 李华