打开特定端口,以便 WSL 可以与我的浏览器通信

打开特定端口,以便 WSL 可以与我的浏览器通信

我正在尝试从 WSL(适用于 Linux 的 Windows 子系统)运行 Jupyter 笔记本。它使用的默认端口是 localhost:8888

但是如果我尝试通过浏览器访问该功能,什么也不会发生。

如果我使用 启动 Jupyter jupyter notebook --port 8080,我就可以毫无问题地连接 localhost:8080。

所以我认为这是防火墙问题。我正在运行 Windows Defender,但对它一无所知。我尝试设置传入规则以允许端口 8888,按照说明操作这里但这没用。然后我尝试添加传出规则,但这也没用。

我可能做错了一些非常简单的事情。

有任何想法吗?

答案1

首先,让我们先了解如何获取 WSL 分发二进制路径。请参阅 SuperUser 的以下问答:

安装 jupyter notebook在 WSL 中,解析 python 二进制文件的完整路径。从上一个答案中获取发行版安装路径并附加以下内容:

  • Python2的:\rootfs\usr\bin\python2.7
  • Python3:\rootfs\usr\bin\python3.5

完整路径如下:

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\bin\python3.5 

太长了,不是吗?现在在 Windows 防火墙中允许。可以使用 Windows 防火墙管理控制台 ( wf.msc)。这里netsh使用命令。以管理员身份运行此命令:

netsh advfirewall firewall add rule Name=Python Program="put-the-path-here" LocalPort=8888 Action=allow Dir=Out 

或者使用 PowerShell:

New-NetFirewallRule -DisplayName "Python" -Name "Python" -Direction Outbound -Program "put-the-path-here" LocalPort 8888 -Action Allow 

这将允许该 Python 二进制文件使用端口 8888。如果 Windows 端浏览器也受防火墙保护,则允许它接受连接。有关更多详细信息,请参阅网络管理员新 NetFirewallRule命令语法。

相关内容