通过热点连接时,通过 WSL 通过 SSH 进入设备

通过热点连接时,通过 WSL 通过 SSH 进入设备

我已将 Raspberry Pi 连接到 Windows 计算机的热点网络。我无法将 Pi 连接到我所在大学的 Wi-Fi 网络,因为他们一次只允许一个设备(因此,如果我将 Pi 连接到 WAP,我的笔记本电脑将无法上网)。

在 PowerShell 中,如果我输入ssh npinpi即 Pi 的主机名),它会按预期工作。但是在 WSL(Debian)上,它似乎只是挂起/等待了很长时间,什么也没发生。

当 Pi 连接到我的计算机热点时,如何通过 WSL 连接到我的 Pi?

答案1

有趣的场景。我在这里会进行有根据的猜测,因为在我这边重新创建这个会有点太耗时。但请记住,我还没有机会测试这个(然而,对于未来的读者来说,原帖作者已经通过评论确认了它的有效性)。

问题似乎是:

  • Windows 主机通过 Wi-fi 适配器连接到您所在大学的网络的互联网。

  • 该连接使用 Hyper-V 交换机(我们实际上对此没有太多的控制权)共享到 WSL2。

  • 该连接也通过 Windows 热点功能与 RPi(单独)共享。

  • 因此,WSL2 Debian 发行版和 RPi 位于两个独立的网络上,它们之间没有路由。

如果您只需要ssh访问,那么我的建议是使用 Windows OpenSSH 服务器作为跳转主机。您可能需要安装它并配置防火墙规则(该文档中也介绍过)。

然后,从 Debian,您可以:

ssh <windows_username>@$(hostname).local

用途$(hostname).localmDNS 连接到 Windows 主机。从那里,您可以使用“跳转”到您的 Pi ssh npi

您还可以稍微简化一下,只需直接从 Debian 指定跳转主机即可,例如:

ssh -A -J <windows_user>@$(hostname).local <npi_username>@npi

正如您在评论中指出的那样(对于其他读者),您还可以使用~/.ssh/config记录的文件进一步简化此过程这里echo $(hostname).local。在这种情况下,您需要使用 的输出对 Windows 主机名进行硬编码。

有了它config,您就可以简单地回到:

ssh npi

其他服务

如果您需要从 WSL2/Debian 访问 RPi 上的其他服务,那么您仍然可以使用 SSH 隧道在两者之间转发所需的端口。

公私密钥认证。

简而言之,使用以下命令将 WSL 系统的公钥添加到 Windows 系统中这个答案

接下来,将您的 WSL 公钥添加到 Raspberry Pi。您可以再次“跳转”,使用以下命令(从 WSL 执行):

ssh-copy-id -o ProxyJump=<windows_username>@<windows_hostname>.local <Pi-username>@<Pi-hostname>

相关内容