我已将 Raspberry Pi 连接到 Windows 计算机的热点网络。我无法将 Pi 连接到我所在大学的 Wi-Fi 网络,因为他们一次只允许一个设备(因此,如果我将 Pi 连接到 WAP,我的笔记本电脑将无法上网)。
在 PowerShell 中,如果我输入ssh npi
(npi
即 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).local
mDNS 连接到 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>