从 WSL 2 内部访问在 Windows 中运行的本地主机 [关闭]

2023-11-27

我正在运行本地AEM服务器 in my Windows机。服务器正在运行本地主机:4502。我正在使用运行的 Ubuntu 发行版WSL 2为了我的发展。我想访问本地主机:4502在我的 Windows 机器上运行WSL 2 Ubuntu.

有没有办法做到这一点或者不可能?


最新 Windows 版本的简短回答

mDNS 成为 WSL2 的一项功能已经有一段时间了。连接您的 WSL2hostname(或您的编程/语言环境中的等效命令/函数)".local"应该可以让你访问。

例如,从 Bash 尝试:

ping "$(hostname).local"

例如,如果您的hostname是“MyComputer”,那么 mDNS 应该是MyComputer.local.

如果 ICMP 被阻止(似乎在新安装的 Windows 11 上),或者如果您想测试与实际端口的连接,请使用 netcat。默认情况下,它在 WSL Ubuntu 安装中可用,但可能需要安装在 openSUSE 等其他发行版中:

nc -zv "$(hostname).local" <portnumber>

为什么本地主机不起作用

WSL2 与 Windows 虚拟机平台(Hyper-V 的子集)创建的虚拟网络 (vNIC) 一起运行。Inside WSL2, localhost是 vNIC 的地址。

你需要什么

WSL2 还在 Windows 主机上设置了一个虚拟路由器,以允许连接到外部世界以及 Windows 主机。您可以通过以下方式查看:

ip route

这是您需要用于 Windows 主机的地址。

当然,您可以从路线中解析它(或者,如之前的答案所示,从/etc/resolv.conf),但是 WSL 设置了一个方便的 mDNS(.local域)使用 Windows“计算机名称”,该名称也用作 WSL 实例的主机名。

如此串联$(hostname)(或者在您的编程/语言环境中等效)".local"应该可以让你访问。

其他考虑因素:

  • mDNS 依赖于 Windows 主机来解析名称。如果您改变了您的/etc/resolv.conf在 WSL 下,那么这可能行不通。

  • 请记住打开任何必要的防火墙端口。 WSL2 被认为是独立网络来自 Windows 主机的信息。 Windows 会将 WSL2 的网络连接视为来自外部源。(归功于@拉米尔吉尔法诺夫指出这一点的评论)

    第一次从 WSL2 到特定端口建立连接时,Windows Defender(如果这是您的防火墙)通常会显示一个对话框,询问您是否要授予访问权限。然而,根据我的经验,这个对话经常被掩盖under主窗口由于鼠标点击、键盘等的计时,所以很容易错过。

  • 请记住让您的 Windows 服务接受来自远程主机的连接。

    许多服务器默认配置为绑定到localhost/127.0.0.1。因为 WSL2 对 Windows 来说是remote网络,您通常需要更新配置才能绑定到0.0.0.0或具体地址。

    请注意,由于 WSL2 的地址在每次重新启动后都会发生变化,因此每次更新配置可能会很困难。如果可能的话,使用0.0.0.0除非存在安全问题。由于 WSL 的设计目的是发展而不是生产,这不应该是一个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 WSL 2 内部访问在 Windows 中运行的本地主机 [关闭] 的相关文章

  • 如何获取Windows批处理的父文件夹

    我正在编写一个批处理文件 我需要获取该bat文件的父文件夹 有可能吗 注意 我的意思是批处理文件的父文件夹 而不是调用该批处理的提示的当前目录 Thanks 批处理的父文件夹位于变量中 dp0位于 例子 echo off setlocal
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • Windows 睡眠功能极慢

    我正在通过 Windows h 使用 Sleep 命令制作一个程序 并且在 Windows 10 而不是 Windows 7 上运行我的程序时遇到了令人沮丧的差异 我将我的程序简化为下面的程序 它与我的更复杂的程序表现出相同的行为 在 Wi
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 批处理脚本 FOR 循环仅设置输出的第一个字母 wsl --list -q

    我正在编写一个批处理脚本 将文件从 Windows 目录复制到 WSL 发行版 其中一部分是选择将文件复制到哪个发行版 如果我使用命令wsl list q如果给我以下输出 Ubuntu 22 04 Ubuntu 18 04 我正在尝试使用此
  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • 可以读取目标文件吗?

    我很好奇 obj文件 我几乎不知道它们是什么 或者它们包含什么 所以我用 Vim 文本编辑器打开它们 我在里面发现了一种类似外星人的语言 有什么办法可以理解它们代表什么以及它们的内容是什么 另外 它们的用途是什么 Thanks Sure 但
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • Windows 8 Metro 应用程序(网格应用程序)过渡时出现黑色闪烁

    我正在基于网格应用程序模板构建 Windows 8 Metro 应用程序 一切都很顺利 直到我尝试更改应用程序的主题和背景 我将图像背景应用于所有 3 个 XAML 页面的网格 另外 我在应用程序包清单中将主题更改为 Light 但它没有执
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 在 Windows 上查找父进程 ID

    Problem 给定远程 Windows 主机上的进程 ID 和命令行访问权限 如何找到其父进程的 PID Solution 鉴于 Marc B 的回答 我们可以使用 WMIC 命令示例here https learn microsoft
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 在 64 位 Windows 上运行 32 位可执行文件时出现问题

    如果允许的话 我会添加 500 个我自己的代表作为赏金 我在用着wkhtml转pdf http wkhtmltopdf org 将 HTML 网页转换为 PDF 这在我的 32 位开发服务器上完美运行 不幸的是 我无法运送我的机器 p 但是
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg

随机推荐

  • 从 VMWare 计算机访问主机 SQL Server

    我有 Windows 7 上面装有 SQL Server 2008 和 SQL Express 2012 我还在两台vmware机器上安装了win xp 我正在尽力使用 Management Studio 从虚拟机连接到主机上的 SQL S
  • 系统管理.管理异常

    我正在运行以下代码 System Management ManagementClass wmiNetAdapterConfiguration new System Management ManagementClass Win32 Netwo
  • 编译器是否允许像带有 -O2 的英特尔 C++ 编译器那样删除无限循环?

    以下测试代码在 VS 中无论是调试还是发布都能正确运行 在 GCC 中也能正确运行 对于带有调试功能的 ICC 它也能正确执行 但在启用优化时则无法正确执行 O2 include
  • 为什么静态字段不使用 google.gson.GsonBuilder JSON 解析器进行序列化?

    I tried 序列化一个对象使用google gson GsonBuilder如下 public class JsonHelper public static String ToJson Object o Type oType Gson
  • Android应用程序的唯一ID

    Android应用程序的唯一ID是什么 是包名吗 一台设备上可以有两个具有相同包名的应用程序吗 有 2 个不同的东西 Java 包和 Android 应用程序包 第二个必须是唯一的 有一篇关于它的好文章here
  • 作为 Java 运行一个简单的文本文件

    我有一个简单的 txt 文件 里面有纯 Java 代码 就像 public class C public static void main String args System out println This is executed 该文
  • 如何扩展 Quartz 调度程序?

    我计划使用石英调度器因为我读到了很多关于它的好意见 我的问题如下 在任何给定时间 系统中都会有数千个触发器 大多数触发器只会触发一个事件并消失 此外 我很可能在分配后不得不取消许多工作 基于新的输入 Quartz 可以扩展到这个程度吗 推荐
  • 使用 Feed Exporter 将项目从 Scrapyd 保存到 Amazon S3

    将 Scrapy 与 amazon S3 结合使用相当简单 您可以设置 FEED URI s3 MYBUCKET feeds 名称 s 时间 s jl FEED FORMAT jsonlines AWS ACCESS KEY ID 访问密钥
  • 运行时是否需要请求互联网权限(Android)?

    对于 Android 我们需要在运行时请求权限 以确保用户更好地理解为什么需要权限 我知道对于像这样的权限来说这是正确的WRITE CALENDAR and ACCESS FINE LOCATION但似乎互联网不需要它 这并不奇怪 因为几乎
  • Xcode6 无法将服务器的响应解析为 plist

    我正在尝试将我的苹果开发者帐户添加到 Xcode Beta 3 以便我可以在 iPhone 中运行应用程序 但没有成功 我转到 Xcode gt 首选项 gt 帐户 gt 添加 Apple ID 然后我输入我的用户凭据并按 确定 我不认为这
  • 将视频插入图库 [Android Q]

    记录一个SurfeceView我正在使用第 3 方library 这个库需要一个路径 在我的例子中保存的输出 录制的视频 是保存的视频路径 mRenderPipeline EZFilter input this effectBmp addF
  • Codeblocks 的 Boost 库设置 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何在 Codeblocks Windows 中使用 boost 库 从 boost 网
  • 内置 WPF 控件如何管理附加事件的事件处理程序?

    我知道当您将对象注册到鼠标的附加事件时 就会出现内存泄漏 这就是为什么你需要使用弱事件模式 我对这种模式有一个问题 如果您想使用它 则无法在 XAML 代码中定义处理程序 对我来说 这意味着像这样的每个代码都会泄漏
  • 我的流媒体音频播放器在通话期间继续播放 - 无法让它停止! (安卓)

    我有一个由多项活动和一项服务组成的应用程序 主要活动是用于流音频的 UI 当用户按下播放按钮时 服务就会启动 传输音频并读取元数据 然后 元数据会被推送到 UI 如果可见 和通知栏 在接到电话之前 一切都按预期运行 我曾假设通过使用标准媒体
  • 当主机代码中声明常量内存时,CUDA如何访问设备内核中的常量内存?

    根据记录 这是家庭作业 因此请记住这一点 或多或少地提供帮助 我们使用常量内存来存储 掩码矩阵 该矩阵将用于在更大的矩阵上执行卷积 当我在主机代码中时 我使用 cudaMemcpyToSymbol 将掩码复制到常量内存 我的问题是 一旦将其
  • 访问 DI 容器

    我正在开始一个新项目并建立工作基础 出现了一些问题 我可能会在这里问很多问题 希望我能找到一些答案 第一步是处理对象的依赖关系 我决定采用依赖注入设计模式 我对此有些陌生 来处理应用程序的所有这些问题 在实际编码时我遇到了一个问题 如果一个
  • Rails:发出 POST 请求时无法验证 CSRF 令牌的真实性

    我要实现POST request给我本地的开发人员 如下所示 HTTParty post http localhost 3000 fetch heroku body gt type gt product 但是 从服务器控制台报告 Start
  • 以编程方式更改系统显示大小 Android N

    背景 Android N 具有更改系统的功能Display Size从设置中 除了以前存在的更改功能之外Font Size 更改显示尺寸 图片来源 pcmag com Question 如果一个应用程序有android permission
  • 使用 Java 为 OSX 编写可执行 .sh 文件

    所以我试图编写一个可执行的 sh 文件 这就是我目前编写的方式 Writer output null try output new BufferedWriter new FileWriter file2 output write shell
  • 从 WSL 2 内部访问在 Windows 中运行的本地主机 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在运行本地AEM服务器 in my Windows机 服务器正在运行本地主机 4502 我正在使用运行的 Ubuntu 发行版WSL 2为了我的发展 我想访问本地主机 4502在