Remote-SSH 连接失败的根源在于底层 SSH 配置,需先确保本地 ssh 命令行直连成功、~/.ssh/config 格式正确(空格缩进、无 Tab、Host 名合规)、vscode-server 手动部署完备(curl/tar 可用、版本匹配),并完成免密登录(ed25519 密钥+正确权限)。

Remote-SSH 能连上服务器,不代表配置就对了;很多问题出在 ~/.ssh/config 格式、vscode-server 部署失败或本地 ssh 命令本身不通——先确认底层 SSH 能跑通,再谈插件。
确认本地 ssh 命令行能直连
Remote-SSH 完全依赖你系统 PATH 里的 ssh 命令。终端里连不上,VS Code 必然失败。
- 在终端执行:
ssh -i ~/.ssh/id_rsa user@192.168.1.100 -p 22(替换为你的真实密钥路径、用户名和 IP) - 如果报
Permission denied (publickey):运行ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100 - 如果超时:检查远程
sshd是否运行(sudo systemctl status sshd),端口是否监听(sudo ss -tuln | grep ':22'),云服务器还要看安全组是否放行 - Windows 用户注意:PowerShell 默认不带 OpenSSH 客户端,需在「设置 → 可选功能」中启用「OpenSSH 客户端」
写对 ~/.ssh/config 才能被 Remote-SSH 识别
VS Code 的主机列表直接读取这个文件,手输连接串不可复用,且极易因缩进/大小写出错。
- 用
nano ~/.ssh/config(Linux/macOS)或notepad ~/.ssh/config(Windows)编辑 - 必须用空格缩进,禁用 Tab;每行开头不能有空格;
Host名不能含下划线或特殊字符(推荐纯字母+数字) - 标准写法示例:
Host myserver
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/myserver_key
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
- 保存后,在 VS Code 按
Ctrl+Shift+P,输入Remote-SSH: Reload Window,再执行Remote-SSH: Connect to Host,myserver应该出现在列表里
vscode-server 手动部署避免卡死
首次连接时,VS Code 会自动在远程下载并解压 vscode-server,但常因网络策略、缺少 curl 或 tar 失败——此时界面卡在“正在安装 VS Code Server”,无报错也无进展。
- 登录服务器后,先检查基础工具:
which curl tar unzip bash - 若缺失,Ubuntu/Debian 运行:
sudo apt update && sudo apt install -y curl tar unzip - 手动下载对应版本(从
https://update.code.visualstudio.com/commit:COMMIT_ID/server-linux-x64/stable获取 URL,COMMIT_ID 可在 VS Code 关于页找到) - 上传并解压:
mkdir -p ~/.vscode-server/bin/COMMIT_ID && tar -xzf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/COMMIT_ID --strip-components 1
免密登录不是可选项,是必选项
每次连都输密码,不仅效率低,还会干扰 vscode-server 自动部署流程(某些环节会卡在交互式密码提示)。
- 密钥生成用:
ssh-keygen -t ed25519 -C "you@example.com"(比 RSA 更快更安全) - 权限必须设对:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_ed25519 -
IdentityFile路径要写绝对路径,Windows 上注意反斜杠转义或用正斜杠(如C:/Users/name/.ssh/key) - VS Code 内置 SSH Agent 一般能自动加载密钥,但如果仍提示输密码,可在 VS Code 设置里搜
remote.ssh.enableAgentForwarding并设为true
真正卡住的地方往往不是插件本身,而是 ssh 命令没走通、~/.ssh/config 多了一个空格、或者远程服务器缺 tar ——别急着查插件文档,先回到终端,用最原始的方式验证连接链路是否完整。


















