引言
首先,我想说明一下为什么会写这样一篇文章。
我最近在使用 VS Code 远程连接主机,但是遇到了一些问题。举例来说,我发现假如在 Windows 上启用 SSH Server,然后用 VS Code 连接到 Windows,再进入 Windows 上的 WSL2,再启用 WSL2 中的容器就会失败。这种层层嵌套导致失败的原因我已经暂时研究明白了,但是本文先不再赘述,防止偏离主题。
我很久之前就在互联网上搜索过类似的问题,但是拿到的答案千奇百怪,在实操中也难以复现。我意识到这些无非是 AI 随便生成的文章,通篇乱说一气,误导了读者,也浪费了读者的时间。我越来越对这样的文章深恶痛绝。
本文旨在成为目前互联网上最全面、最实用、最可复现的关于“如何通过 SSH 访问 WSL2(例如 Fedora 43)”的文档。本文没有丝毫 AI 写作的成分,每一个字都是我实际操作的结晶,如果您觉得有用,还请帮忙大力推广这篇文章,从而把 AI 写出来的那些垃圾的优先级降低。
本文中,我每一步都会解释为什么要这么做、命令每个参数的含义、常见陷阱与对应的排查方法。通过此文章,我希望读者并不仅仅可以解决题目中的主题任务,更可以掌握通用工具的操作方法,以及遇到问题的排查和解决思路。
安装 WSL2
见 WSL 使用指南。
安装发行版
见 WSL 使用指南。
进入发行版的操作
安装 SSH 服务
以我使用的 Fedora 43 这一发行版作为例子:
|
|
以 systemd 启动 ssh:
|
|
获取 WSL 的 ip 地址
|
|
在宿主机的操作
配置端口转发
请为 Windows 启动 sudo,否则以下操作则必须使用管理员权限的终端运行。
我非常喜欢 Windows 11 24H2 后默认引入的 sudo,这可以减少很多工作量,非常方便。
|
|
配置防火墙
|
|
在宿主机上测试
|
|
在其他机器上的操作
|
|
余下的步骤(在宿主机上操作)
查看端口转发:
|
|
删除端口转发:
|
|
删除防火墙规则:
|
|
[TODO]
本文尚未完成,随时同步草稿分支。