

























前言:
Windows 系统里面安装了虚拟机,又在虚拟机里面安装了 Ubuntu 的系统,在 Windows 系统里面的 vscode 里面安装了 Remote - SSH 插件,也搞定了各种配置,最后连接虚拟机里面的 Ubuntu 系统的时候,报错了。如下图所示:

然后就排查各种原因,各种问AI,搜网上的资料,最后通过别的方法解决了。现记录一下。
在B站上面看到了一个视频,讲解远程连接 Ubuntu 系统失败的处理。看评论里面很多人都是感谢博主的,虽然我通过视频的方法没有解决我的问题,但是我觉得值得记录一下。




一般情况下,设置如上,就可以连接成功了,到此已经可以解决大部分人的问题了,如果没有解决问题,我看视频下面的评论有一条点赞很多,我截图如下:

方案一到此结束,很多人留言都说解决了自己的问题,但是我按照视频中的方法,依然没有解决我的问题。我不知道是哪里出问题了。只有继续问AI。
我按照AI回答的指导各种测试,然后截图问AI,下面是我的截图:
查询windows系统的IP:

查询 Ubuntu 系统的IP:

查询 Ubuntu 的防火墙:

在 Windows 系统中测试 SSH 连接:

在Windows系统中 ping Ubuntu 系统的IP,ping不通:

在 Ubuntu 系统中 ping Windows 系统的IP,可以ping的通:

虚拟机菜单里面的 【编辑】--- 【虚拟网络编辑器】:

当我把上面所有的截图给 Deepseek 的时候,AI给出的答案如下:
| 项目 | 值 |
| 虚拟机 IP | 192.168.88.129/24 |
| 宿主机 IP | 192.168.99.190/24 |
| 虚拟网络模式 | NAT(VMnet8,子网 192.168.88.0/24) |
| 宿主机所属网段 | 192.168.99.0/24(通过 WLAN) |
结论:两者不在同一网段,而且 NAT 模式下,宿主机无法直接访问 NAT 内部的虚拟机(除非配置端口转发)。
虚拟机之所以能 ping 通宿主机,是因为 NAT 允许虚拟机通过宿主机访问外部网络(包括宿主机自身),但反向流量默认不被转发。
解决方案: 设置 NAT 端口转发(推荐,无需改动网络模式)
在 VMware 中为 NAT 网络添加端口转发,将宿主机的某个端口映射到虚拟机的 22 端口。
步骤:
打开 VMware Workstation,菜单栏 编辑 → 虚拟网络编辑器。
选择 VMnet8(NAT 模式),点击 NAT 设置。
在“端口转发”区域,点击 添加。
主机端口:填写一个未被占用的端口,比如 2222
类型:TCP
虚拟机 IP 地址:192.168.88.129
虚拟机端口:22
描述随意(如 "SSH")
确定保存。
我自己设置的时候截图如下:

最后的修改结果:

在 Windows 命令提示符(CMD)中执行:
ssh -p 2222 leaf@127.0.0.1
(这里用 127.0.0.1 是因为宿主机自己监听 2222 端口,流量会通过 NAT 转发给虚拟机)
输入虚拟机的 leaf 用户密码,如果能登录,说明设置成功。
我自己测试成功的截图:

在 Windows 用户目录下的 .ssh\config 文件中(路径:C:\Users\Lenovo\.ssh\config)添加如下代码,然后保存:
Host ubuntu-vm
HostName 127.0.0.1
User leaf
Port 2222
截图如下:

至此,设置完成,但是我这种设置有种缺陷,虚拟机的IP如果变化的话,我还得重新设置。
因为现在设置的端口转发目标是 192.168.88.129,这个 IP 是 VMware NAT 的 DHCP 动态分配 的。
如果将来虚拟机重启或 DHCP 租约到期,IP 可能变为 192.168.88.130 或别的。
一旦 IP 变了,端口转发就会失效(因为目标地址不对),你需要重新进入虚拟网络编辑器,把端口转发里的“虚拟机 IP 地址”改成新的 IP。
解决办法(强烈建议):在 Ubuntu 虚拟机中设置静态 IP,让它永远固定为 192.168.88.129。
但是我暂时没有采用 AI 的建议,暂时还没有修改为静态的IP。
最后在 vscode 中连接就可以成功了:

成功截图:

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。