remote-ssh首次连接失败主因是vs code server版本兼容性与权限问题,具体表现为failed to fetch commit id(外网访问受限)、permission denied(authorized_keys权限过宽)、卡在安装界面(/tmp空间不足或残留文件),需严格匹配本地vs code版本、远程架构及~/.vscode-server权限,并配置正确ssh config与免密登录。

Remote-SSH 插件能直接编辑远程文件,但首次连接失败率高,核心卡点不是配置格式,而是 VS Code Server 的版本兼容性与权限问题。
Remote-SSH 首次连接失败的三个典型错误
连不上、卡在“Installing VS Code Server”、弹出 Failed to fetch commit id 或 Permission denied (publickey) —— 这些都不是网络或密码问题,而是本地 VS Code 版本、远程服务器架构、.vscode-server 目录权限三者没对齐。
-
Failed to fetch commit id:说明 VS Code 试图从微软 CDN 下载服务端,但被防火墙/代理拦截,或远程服务器无法访问外网;离线场景必须手动部署对应 Commit ID 的vscode-server-linux-x64.tar.gz -
Permission denied (publickey):不是密钥没配好,而是远程~/.ssh/authorized_keys权限太宽松(如 755),SSH 服务会拒绝加载;应设为600,且~/.ssh目录为700 - 卡在安装界面不动:大概率是远程服务器
/tmp空间不足,或~/.vscode-server被上一次失败残留占用;可先手动删掉rm -rf ~/.vscode-server再重试
config 文件里必须写对的三个字段
VS Code 不读 SSH 命令行参数(比如 ssh -p 2222 user@host),只认 ~/.ssh/config 里的显式声明。错一个字段,就进不了连接选择列表。
-
Host:别名,必须唯一,不能含空格或下划线,建议用短小字母组合(如prod、dev01) -
HostName:IP 或域名,不要带ssh://或端口,端口必须单独写Port -
Port:非默认 22 端口时必填,值是纯数字,不能写成Port 2222后面跟注释
示例正确写法:
Host prod
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_rsa_prod
离线环境必须手动部署 vscode-server
公司内网、科研集群、国产化服务器等场景下,VS Code 默认下载机制必然失败。不能依赖“重试”或“换网络”,得提前把 CLI 和 Server 包传上去。
- 先在本地查 VS Code 版本:
Ctrl+Shift+P→ 输入About: Version→ 记下 Commit ID(如7d842fb85a0275a4a8e4d7e040d2625abbf7f084)和架构(uname -m返回x86_64或aarch64) - 下载两个包:
vscode_cli_linux_x64_cli.tar.gz和vscode-server-linux-x64.tar.gz(注意替换 Commit ID 和架构) - 上传后,在远程服务器执行解压命令,路径必须严格匹配:
~/.vscode-server/cli/servers/Stable-<commit_id></commit_id>是 Server 解压目标,~/.vscode-server/bin/code-server是 CLI 重命名后的入口 - 最后补一句:
chmod -R +x ~/.vscode-server,否则新版会报permission denied而静默退出
免密登录不是可选项,是稳定连接的前提
每次输密码不仅麻烦,还会触发 SSH 登录限制(如 3 次失败锁 IP),更关键的是——VS Code 在后台频繁建立子连接(终端、调试器、文件监听),密码方式根本撑不住。
- 本地生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com",不设 passphrase(否则仍要输) - 上传公钥到远程:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host;若失败,手动追加内容到远程~/.ssh/authorized_keys - 确保远程
sshd_config开启了PubkeyAuthentication yes,并重启服务:sudo systemctl restart sshd
真正容易被忽略的是:VS Code Remote-SSH 默认启用 ForwardAgent yes,如果你跳过登录节点访问计算节点,这个设置会让代理链失效;此时应在 config 中显式关闭:ForwardAgent no。











