vs code连不上虚拟机主因是sshd未运行、ip/端口/防火墙配置错误或vscode-server部署失败;需先检查sshd状态、确认真实ip、开放22端口、清空/tmp、确保主目录可写、密钥权限为600并正确配置identityfile。

VS Code 连不上虚拟机?先确认 SSH 服务跑起来了
连不上,90% 的情况不是 VS Code 的问题,而是虚拟机里 sshd 根本没在运行。Ubuntu 默认可能装了 openssh-server,但服务未必启用;有些精简镜像甚至压根没装。
- 进虚拟机终端,执行
systemctl status ssh或systemctl status sshd.service—— 必须看到Active: active (running),否则后续全白搭 - 如果显示
inactive或not found,先装:sudo apt-get install openssh-server,再启:sudo systemctl enable --now ssh - 别信“我装过”,重启过系统后没设
enable的服务会自动停掉 ——systemctl enable是必须步骤,不是可选项
IP 地址填错、端口不通、防火墙拦路,三者必查其一
VS Code 报 Connection refused 或卡在 Setting up SSH Host …,基本就是网络层断了。不是 VS Code 配置错了,是根本连不到那台机器。
- 虚拟机 IP 必须是
ifconfig(或ip a)里ens33/eth0等真实网卡的地址,不是lo(127.0.0.1)或 VMware 的 NAT 网关(如 192.168.217.2) - Windows 主机要能
ping通这个 IP;如果 ping 不通,检查 VMware 网络模式——推荐用NAT 模式,并确认VMnet8已启用、NAT 设置里开了端口转发(主机 22 → 虚拟机 IP:22) - 虚拟机防火墙常被忽略:
sudo ufw status查状态,若为active,必须加规则:sudo ufw allow 22;ufw默认 deny 所有入站
Remote-SSH 插件连上后卡在 “Copying VS Code Server” 怎么办
这是最典型的“看似连上了,实则卡死”场景。本质是 VS Code 尝试把服务端组件(vscode-server)复制到虚拟机失败,原因通常是权限、路径或磁盘空间问题。
- 先手动验证基础连接:Windows 终端运行
ssh 用户名@虚拟机IP,能登录就说明网络和认证没问题;卡在这里,问题出在 VS Code 自动部署环节 - 检查虚拟机
/tmp是否满(df -h /tmp),vscode-server默认解压到那里;满了就清空:sudo rm -rf /tmp/vscode-* - 确保用户主目录可写:
ls -ld ~看权限是否为drwxr-xr-x或更宽松;若为dr-xr-xr-x(无写权限),chmod u+w ~ - 不推荐跳过这步去改配置路径,除非你明确知道
remote.SSH.serverInstallPath怎么设;默认路径最稳
用密钥登录省密码,但 VS Code 不认私钥?重点看三件事
配好密钥后 VS Code 仍弹密码框,不是密钥没生成,而是它根本没加载到正确位置或格式不对。
- 私钥文件权限必须是
600:chmod 600 ~/.ssh/id_rsa(Windows 下对应C:\Users\用户名\.ssh\id_rsa);VS Code 会拒绝读取权限过宽的密钥 - VS Code 的 SSH 配置必须显式指定密钥路径:
IdentityFile行不能少,且路径用正斜杠、不带中文、不带空格;例如:IdentityFile ~/.ssh/id_rsa - 公钥内容得完整无误追加进虚拟机的
~/.ssh/authorized_keys—— 注意是“追加”,不是覆盖;末尾不能有多余空行或不可见字符;可用ssh-keygen -l -f ~/.ssh/id_rsa.pub核对指纹是否一致
密钥登录一旦生效,vscode-server 后续更新、扩展安装、终端复用都会顺滑很多;但第一次配错,比输十次密码还费时间。










