Windows 系统 vscode Remote-SSH 远程连接虚拟机里面的Ubuntu系统的失败处理

前言:

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

91d5213c14b5f5193a488d8327de12ab

 然后就排查各种原因,各种问AI,搜网上的资料,最后通过别的方法解决了。现记录一下。

一、方案一:修改 Vscode 的配置文件

在B站上面看到了一个视频,讲解远程连接 Ubuntu 系统失败的处理。看评论里面很多人都是感谢博主的,虽然我通过视频的方法没有解决我的问题,但是我觉得值得记录一下。

1、remote-ssh失败,先关闭远程连接。

2、点击 vscode 左下角的设置图标,然后选择设置选项

image

 3、然后点击右上角的【打开设置(json)】图标

image

 4、在设置文件里面添加如下代码,其中  remote.SSH.remotePlatform 中的 key 值 "myUbuntu" 是SSH 配置文件中的 host 名字。

image

 

image

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

7caab639f170cf2c6e6be7ea583d526e

 方案一到此结束,很多人留言都说解决了自己的问题,但是我按照视频中的方法,依然没有解决我的问题。我不知道是哪里出问题了。只有继续问AI。

二、方案二:记录我的解决办法

我按照AI回答的指导各种测试,然后截图问AI,下面是我的截图:

查询windows系统的IP:

image

 查询 Ubuntu 系统的IP:

image

 查询 Ubuntu 的防火墙:

image

 在 Windows 系统中测试 SSH 连接:

image

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

image

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

image

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

image

 当我把上面所有的截图给 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 端口。

步骤:

  1. 打开 VMware Workstation,菜单栏 编辑 → 虚拟网络编辑器。

  2. 选择 VMnet8(NAT 模式),点击 NAT 设置。

  3. 在“端口转发”区域,点击 添加。

    • 主机端口:填写一个未被占用的端口,比如 2222

    • 类型:TCP

    • 虚拟机 IP 地址192.168.88.129

    • 虚拟机端口22

    • 描述随意(如 "SSH")

  4. 确定保存。

我自己设置的时候截图如下:

image

 最后的修改结果:

image

 

配置完成后测试连接

在 Windows 命令提示符(CMD)中执行:

ssh -p 2222 leaf@127.0.0.1

(这里用 127.0.0.1 是因为宿主机自己监听 2222 端口,流量会通过 NAT 转发给虚拟机)

输入虚拟机的 leaf 用户密码,如果能登录,说明设置成功。

我自己测试成功的截图:

image

 

VSCode Remote-SSH 配置

在 Windows 用户目录下的 .ssh\config 文件中(路径:C:\Users\Lenovo\.ssh\config)添加如下代码,然后保存:

Host ubuntu-vm
    HostName 127.0.0.1
    User leaf
    Port 2222

截图如下:

image

 

至此,设置完成,但是我这种设置有种缺陷,虚拟机的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 中连接就可以成功了:

image

 成功截图:

image

posted @ 2026-06-27 16:01  smil、梵音  阅读(27)  评论(0)    收藏  举报