Vs code连接虚拟机
有同学在问如何通过Windows中的VS Code连接VMware虚拟机中的Ubuntu。要实现这点,要通过SSH连接。
这里分享一下我的安装配置经验。如有谬误,敬请指正。
一、Ubuntu设置
一) 设置固定IP地址
一般地,虚拟机中Ubuntu的IP地址是通过DHCP方式动态分配的,因此每次启动后地址可能不一样。为此,必须为虚拟机设置一个固定的IP地址。
-
点击
Ubuntu桌面右上角的网络图标,在下拉菜单中选择设置或者Settings。 -
在弹出的窗口中,在左侧栏顶部选择
网络或者Network。出现的窗口类似于:
-
点击Wired项目中右侧的齿轮,进入设置页面:

请记住这个页面中的Default Route和DNS。
- 点击IPv4选项卡,在其中选择Manual,然后:
- 在Addresses中输入你想要的IP地址、子网掩码和网关地址。这里的网关地址输入刚才记下来的Default Route的地址。
- 在DNS中,关闭Automatic,输入刚才记下来的DNS的地址。

- 点击右上角的Apply以生效。
- 在
Ubuntu终端中,发出如下命令重启系统:reboot - 重启后,如果桌面右上角的网络图标上显示
?,则说明网络不通。请检查前面的步骤是否操作正确。
二) 启动SSH服务
在终端中发出如下命令:
sudo service ssh start
如果提示命令不存在,则先安装它:
sudo apt install openssh-server
安装好后启动服务。
二、 Windows设置
一) 为SSH连接做准备
-
生成ssh key
打开
Powershell,发出如下命令:ssh -V如果显示出版本信息,说明你的
Windows系统已经安装了ssh客户端。此时可以运行ssh-keygen命令。如果没有,那么请用管理员身份启动
Powershell,用如下命令安装:Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0再发出如下命令:
cd ~/.ssh ssh-keygen -t rsa -C "your-email"your-email是你常用的邮箱地址。
此命令会提示你,生成的ssh key存放到哪个文件中。可以直接回车,选择默认文件名
rsa_id,或者输入你想要的文件名。例如,我输入了ubuntu。此后都以我的操作为例。
此后的提问一路回车就可以了。
完成后,
~/.ssh目录中会生成两个文件:ubuntu:私钥文件ubuntu.pub:公钥文件
-
创建config文件
打开
VS Code,新建文件,在其中输入:Host ubuntu HostName 192.168.184.129 User bzj IdentityFile ~/.ssh/ubuntuHost:任意你想要的名字HostName:刚为Ubuntu设置的固定IPUser:你登录Ubuntu的账号IdentityFile:刚生成的ssh key的私钥文件名ubuntu
将文件保存到
~/.ssh目录中,并命名为config。 -
复制公钥文件到
Ubuntu以实现免密登录- 进入
Ubuntu桌面,双击Home图标,点击菜单栏上的三条横线图标,勾选Show Hidden Files,此后你会在文件夹里看到.ssh目录。双击打开它。 -
在
Windows中,打开C:\用户\<登录名>\.ssh文件夹,将ubuntu.pub文件复制粘贴到Ubuntu的.ssh目录中,并将其重命名为:authorized_keys。<登录名>是你的Windows登录账号名。 登录名>
- 在
Ubuntu终端中,发出如下命令:cd ~/.ssh chmod 644 authorized_keys
- 进入
二) 测试SSH连接
在Powershell终端中,输入:
ssh -T ubuntu
如果操作无误,那么就可以看到类似于如下信息:
Welcome to Ubuntu 21.10 (GNU/Linux 5.13.0-30-generic x86_64)
//some information
0 updates can be applied immediately.
此时,光标在闪动。这说明已经远程进入了Ubunut系统。试试如下命令:
ls -l
你应该会看到你的Ubuntu登录账号下的目录列表。
输入:
exit
将退出连接。
三、用Code连接虚拟机中的Ubuntu
- 打开
VS Code,点击远程连接图标,在REMOTE EXPLOERER的列表中,选择SSH Targets。 - 此后,下方列表将会出现
config文件中的配置项:ubuntu。 - 点击
ubuntu,根据系统的提示连接上虚拟机中的某个目录。
你可能需要先在虚拟机中创建要连接的目录。