Remote-SSH连接失败需先确保终端ssh直连成功:一、用ssh命令验证连通性及认证;二、检查~/.ssh/config语法与路径;三、确认远程sshd服务运行及用户权限;四、清除VSCode缓存;五、启用debug日志定位错误。

Remote-SSH 不是“点一下就连上”的功能,它本质是复用你本地的 SSH 环境。连不上、卡在 Installing VS Code Server...、弹密码框却输不对——这些问题 90% 都出在 SSH 层,而不是 VSCode 插件本身。
先确保终端能 ssh 直连成功
VSCode 的 Remote-SSH 插件底层调用的是你系统 PATH 下的 ssh 命令,不是它自己带的。跳过这步直接开 VSCode,等于没打地基就盖楼。
- 在终端里执行:
ssh -i ~/.ssh/my_key user@192.168.1.100 -p 2222(把路径、用户、IP、端口换成你的真实值) - 如果报
Permission denied (publickey),别急着重装插件——检查三件事:
– 私钥权限是否为600(chmod 600 ~/.ssh/my_key)
– 远程~/.ssh/authorized_keys是否真有那行公钥(末尾不能有多余空格或换行)
– 远程/etc/ssh/sshd_config是否启用PubkeyAuthentication yes且AllowUsers包含你的用户名 - 如果连通但输出了欢迎语、颜色码、
echo内容,VSCode 会解析失败,报Failed to fetch remote environment。临时验证可运行:ssh -T user@host,干净返回Connection closed.才算过关
用 ~/.ssh/config 定义 Host 别名,别信 UI 里手填
VSCode 的远程主机列表完全来自 ~/.ssh/config 文件。你在插件 UI 里点 + 号手动填 IP,生成的配置不可复用、不支持密钥路径、没法 alias,纯属自找麻烦。
- 编辑
~/.ssh/config,添加标准块(注意:缩进必须是空格,不能是 Tab):Host myserver HostName 192.168.1.100 User ubuntu Port 2222 IdentityFile ~/.ssh/id_ed25519 StrictHostKeyChecking no UserKnownHostsFile /dev/null
- 保存后,按
Ctrl+Shift+P→ 输入Remote-SSH: Reload Window,再打开Remote-SSH: Connect to Host,就能看到myserver -
StrictHostKeyChecking no和UserKnownHostsFile /dev/null是为了绕过 known_hosts 变更导致的连接中断(比如服务器重装),生产环境慎用,调试阶段很省心
vscode-server 卡住或安装失败,大概率是远程环境缺依赖或权限错
SSH 登录成功后,VSCode 会在远程自动下载并启动 vscode-server。卡在这里,不是网络慢,而是远程机器没准备好。
- 远程服务器必须有
curl、tar、gzip(用于解压 server 包),CentOS/RHEL 系统常缺tar,运行yum install -y tar补上 - 检查远程用户对
~/.vscode-server目录是否有写权限:ls -ld ~/.vscode-server,若属主不是当前用户,用chown -R $USER:$USER ~/.vscode-server修复 - 某些精简系统默认 shell 是
/bin/sh,但vscode-server启动脚本依赖bash特性。确认getent passwd $USER | cut -d: -f7返回的是/bin/bash或/bin/zsh;不是的话,用chsh -s $(which bash)改掉
免密登录不是可选项,是稳定使用的前提
每次连都输密码,不仅烦,还会触发 SSH 连接数限制、密钥代理失效等连锁问题。VSCode 的自动初始化逻辑(比如加载扩展、恢复会话)也依赖稳定、无交互的连接通道。
- 生成密钥优先用
ed25519:ssh-keygen -t ed25519 -C "your@email.com" - 部署公钥别只靠
ssh-copy-id—— 登上去手动检查~/.ssh/authorized_keys文件末尾是否真有一行完整的公钥(开头是ssh-ed25519 AAAA...,结尾没换行符) - 如果私钥设了 passphrase,VSCode 启动时会弹窗要你输——这不是 bug,是正常行为。想彻底免交互,就生成时两次回车跳过 passphrase
最常被忽略的一点:VSCode Remote-SSH 的所有行为,都建立在「你本地的 ssh 命令能做什么」之上。它不封装 SSH,只是调用。排查问题时,永远先回到终端,用最原始的 ssh 命令复现,比在 VSCode 里反复点连接快十倍。











