VSCode远程SSH连接失败90%源于本地终端环境残留:known_hosts冲突、ssh-agent缓存错乱或远程vscode-server卡死;应依次执行Kill VS Code Server、清理known_hosts、终止ssh-agent并重启VSCode。

VSCode 远程 SSH 连接失败,90% 不是网络或服务器问题,而是本地终端环境残留导致的——比如旧的 known_hosts 冲突、ssh-agent 缓存密钥错乱、或 VSCode Server 在远程端卡死未清理。
Remote-SSH 连接卡在 “Setting up SSH host” 或直接报 XHR failed
这是最典型的终端环境残留症状,表现为:VSCode 左下角反复显示 “Setting up SSH host...”,几秒后弹出 Could not establish connection to "xxx",但你在终端里 ssh user@host 完全正常。
- 先确认是否真卡住:按
Ctrl+Shift+P输入Remote-SSH: Kill VS Code Server on Host,选目标主机执行一次,强制清理远程端残留进程 - 再清本地缓存:删除
%USERPROFILE%.sshknown_hosts(Windows)或~/.ssh/known_hosts(macOS/Linux)中对应主机那一行(或整个文件),避免 “REMOTE HOST IDENTIFICATION HAS CHANGED” 干扰 - 关掉所有
ssh-agent实例:Windows 上打开 PowerShell 执行Get-Process ssh-agent | Stop-Process;macOS/Linux 执行killall ssh-agent - 别急着重连——重启 VSCode,再试。很多情况仅此三步就恢复
远程终端启动失败:“Error: Could not find pty on pty host”
这个错误说明 VSCode 无法在远程服务器上创建交互式终端,本质是远程端的 vscode-server 环境损坏或权限异常,和本地 SSH 配置无关。
- 不要删本地
%APPDATA%Code或重装插件——这解决不了问题 - 登录服务器终端,手动清理远程服务:运行
rm -rf ~/.vscode-server(注意不是.vscode) - 检查远程用户主目录权限:
ls -ld ~必须是drwx------(700),否则 SSH 拒绝读取密钥或启动服务 - 如果用 root 登录过,确认
/root/.vscode-server是否被写入;普通用户连接时,VSCode 默认不会复用 root 的 server 目录,必须清干净
SSH 密钥不生效,总弹密码框
VSCode 不走你终端里配置好的 ssh -i 或 config,而是自己调用 OpenSSH 可执行文件,路径和参数必须显式对齐。
- 进 VSCode 设置搜
remote.SSH.path,确保它指向你真正能用的ssh命令,比如C:WindowsSystem32OpenSSHssh.exe(Win11 自带)或/usr/bin/ssh(Linux/macOS) - 检查
%USERPROFILE%.sshconfig中的IdentityFile路径:Windows 下必须用正斜杠或双反斜杠,C:/Users/name/.ssh/id_rsa或C:\Users\name\.ssh\id_rsa,单反斜杠会解析失败 - 私钥文件权限必须严格:Windows 上右键
id_rsa→ 属性 → 安全 → 编辑 → 仅保留当前用户“完全控制”,去掉“继承权限”;Linux/macOS 执行chmod 600 ~/.ssh/id_rsa - 如果仍不行,在 VSCode 终端里手动执行
ssh -T -v user@host,看日志里是否加载了你预期的密钥文件
真正麻烦的从来不是第一次连上,而是连上之后改了服务器配置、换了 IP、重装了系统——这些操作会让 VSCode 的远程状态变成“半残废”。每次故障,优先动手清 known_hosts、杀远程 server、校验 ssh 路径,比重装插件快十倍。


















