Kil*_*0ne 10 ssh windows-10 wsl-2
我对这个行业相当陌生,我不明白如何从我的 win10 机器 SSH 到我安装的 wsl2 ubuntu 20.4
基本上,我遵循了本教程,但我不断收到以下错误:
当我尝试使用公共端口(使用curl ifconfig.me)进行 SSH 时,出现错误“连接超时”
当我尝试使用私有端口(使用ip route get 1.2.3.4 | awk '{print $7}')进行 SSH 时,出现错误“权限被拒绝”
在某些时候,我收到错误“sshd:没有可用的主机密钥 - 正在退出”,所以我遵循了此修复,但随后我收到了前面提到的错误。我应该从/etc/ssh文件夹中删除任何内容吗?
最终目标是通过 vs-code 进行 ssh 操作,但我想一旦我可以从 powershell 执行此操作,那么与 vs-code 是一样的。
看来您需要输入/etc/ssh/sshd_config(具有sudo权限)并更改以下行:
ChallengeResponseAuthentication yesPasswordAuthentication yes既然您似乎已经通过 ssh 解决了您的问题,那么让我建议您的最终目标(“从 VSCode ssh 进入 WSL”)可能会使用 Microsoft 的“远程开发”扩展包(其中包含多个扩展)更好地实现。虽然听起来您是考虑使用“远程-SSH”扩展,您也可以直接使用“远程-WSL”扩展。
直接安装扩展包或 WSL 扩展后,只需打开 WSL 实例,cd进入包含代码的目录,然后code .(包括句点)。这将打开 VSCode 并将填充程序安装到 WSL 实例中,以允许两者之间进行通信。
有关更多详细信息,请参阅Microsoft 的文档。
另外,关于您原来问题的主题,您说您编辑了 sshd_config 以允许密码身份验证(我认为 ChallengeResponseAuthentication 更改是必要的)。这是一种方法,但最终我建议生成一个 SSH 密钥对,将私钥复制到类似的东西C:\Users\yourid\.ssh\id_rsa并使用它而不是密码登录。
您在最初的问题中提到您无法在公共端口上访问 SSH。这是因为 WSL2 不执行 NAT,因此如果没有(大量)额外的工作(从 Windows 到 WSL 的手动端口转发,由于 WSL 必须在重新启动时重置),也无法从第二台计算机访问它接口地址将会改变)。
正如您所发现的,WSL 接口地址将起作用,但请记住,每次 Windows 重新启动时它都会发生变化(从技术上讲,我认为,每当 WSL 子系统关闭并重新启动时)。恕我直言,您最好使用 127.0.0.1 或 localhost。
但实际上,我远程访问 WSL 的首选方法是在 Windows 10 端口 22 上安装 OpenSSH。然后您可以简单地执行诸如ssh -t windowsusername@mycomputername.local wsl访问 WSL 实例之类的操作。当您的计算机上有多个 WSL 实例时,您甚至可以使用ssh -t windowsusername@mycomputername.local wsl -d WSLInstanceName.
当然,如果您使用此技术,并且仍然想在 WSL 实例中运行 SSH 服务器,则需要使用不同的端口。但我确实认为在 WSL 下运行 SSH 时无论如何都应该这样做。否则,您可能会在某个时候启动第二个 WSL 实例并遇到端口冲突。
缺点是 Windows OpenSSH -> WSL 黑客不允许您通过 SSH 运行 VSCode 之类的东西,但它确实提供了通过 SSH 对 WSL 的超级简单访问,并且还可以远程工作(如果您需要的话)。
| 归档时间: |
|
| 查看次数: |
20699 次 |
| 最近记录: |