remote-ssh连接失败应先验证ssh服务是否运行:执行sudo systemctl is-active ssh(ubuntu)或sshd(centos),非active则启用服务;再用ss -tlnp | grep :22确认端口监听;virtualbox用户需配置nat端口转发或改用桥接模式。

Remote-SSH 连接失败:先确认 SSH 服务和端口是否真在监听
VSCode 报 Connection refused 或卡在“正在连接…”时,90% 是虚拟机里 SSH 根本没跑起来。装了 openssh-server 不等于服务已启动,必须手动验证。
在虚拟机终端执行:
-
sudo systemctl is-active ssh(Debian/Ubuntu)或sudo systemctl is-active sshd(RHEL/CentOS/openEuler),返回active才算正常 - 若为
inactive,运行sudo systemctl enable --now ssh(或sshd) - 再检查监听状态:
sudo ss -tlnp | grep :22,看到LISTEN且进程是sshd才可靠
VirtualBox 用户若用 NAT 模式,还需额外配置端口转发:主机端口(如 2222)→ 子系统端口 22;桥接模式则直接填虚拟机局域网 IP(如 192.168.1.105)。
~/.ssh/config 写错三处:HostName、User、ForwardAgent
VSCode 的 Remote-SSH 插件严重依赖 ~/.ssh/config,手写易漏关键字段,导致连上即断、权限错误或 Git 认证失败。
典型错误配置:
-
HostName填成localhost或127.0.0.1—— 必须是虚拟机真实局域网 IP 或127.0.0.1(仅限 NAT 端口转发场景) -
User填root—— 大多数发行版默认禁用 root SSH 登录,应填普通用户(如ubuntu、openeuler) - 漏掉
ForwardAgent yes—— 宿主机有 SSH key 时,不加这句,git clone私有仓库会报Permission denied (publickey)
正确示例(NAT 模式):
Host vbox-ubuntu
HostName 127.0.0.1
Port 2222
User ubuntu
ForwardAgent yes
连上了却打不开文件夹:remote.SSH.remotePlatform 和 shell 初始化冲突
点击 “Open Folder” 后弹出 Command failed: /bin/sh -c 或卡死,常见于 shell 配置阻塞或平台识别错误。
原因和对策:
- 虚拟机用
zsh且~/.zshrc中有网络请求、挂载命令等耗时操作 → 在~/.ssh/config对应 Host 下加RemoteCommand bash -l - 精简系统(如 Alpine)默认无
bash,只带ash→ 在 VSCode 设置中搜remote.SSH.remotePlatform,设为alpine或linux,并确保远程$SHELL指向可用 shell - VSCode Server 安装失败(尤其首次连接)→ 手动删掉虚拟机上的
~/.vscode-server目录,重连触发重装
Vagrant 插件连不上:PATH、缓存、日志三步定位
VSCode 的 Vagrant 插件不是“装了就能用”,它完全依赖本地 vagrant 命令能否被调用,且对环境状态敏感。
排查顺序:
- 终端执行
vagrant --version和which vagrant,确认命令存在且路径合理;若失败,需把 Vagrant 安装路径加入系统PATH,或在 VSCode 设置中显式填vagrant.path(如/opt/homebrew/bin/vagrant) - 插件可能残留旧状态 → 命令面板输入
Vagrant: Reset Extension State,然后关闭工作区重开 - 启用
vagrant.debug后,在 Output 面板选Vagrant查看完整命令流,能快速区分是Vagrantfile语法错误、box 下载超时,还是 SSH 密钥权限拒绝
VirtualBox 用户注意:Vagrant 默认用 VirtualBox provider,若同时装了 Hyper-V 或 WSL2,需在 Vagrantfile 显式指定 config.vm.provider "virtualbox",否则可能静默 fallback 到不兼容后端。











