remote-ssh插件安装后必须重启vs code才能生效,否则左侧不显示“远程资源管理器”图标,后续所有操作均无法进行;输入ssh命令时应仅用最简格式(如ssh ubuntu@ip),端口等高级配置须手动写入.ssh/config文件。

能直接用 VS Code 编辑云服务器上的代码,关键不是“装插件”这一步,而是 Remote-SSH 插件连得稳、配得对、权限不卡壳。很多失败根本不是插件问题,而是 SSH 认证或路径配置在后台静默失败。
Remote-SSH 插件安装后必须重启 VS Code 才生效
装完 Remote-SSH 后不重启,左侧不会出现“远程资源管理器”图标(地球形状),后续所有操作都卡住。这不是 bug,是插件机制要求:VS Code 需要加载新的 UI 扩展点。
- Windows/macOS:完全退出 VS Code(右键任务栏图标 → 退出,或 Cmd+Q),再打开
- Linux:确保没有残留进程,
ps aux | grep code看到多个code进程时,用pkill -f code清掉再启 - 别信“重载窗口”(Ctrl+Shift+P → “Developer: Reload Window”),它不触发 Remote 扩展初始化
ssh 用户名@IP 地址格式输错会导致 config 文件写入异常
在“远程资源管理器”里点 + 添加主机时,如果输入 ssh root@123.123.123.123 -p 2222 这类带参数的命令,VS Code 会尝试解析并写入 .ssh/config,但参数处理不健壮——-p 可能被忽略,端口仍走默认 22;更糟的是,若用户名和 HostName 相同(比如 ssh ubuntu@ubuntu),某些 OpenSSH 版本会拒绝写入,导致后续连接报 Could not establish connection 却无具体错误提示。
- 正确做法:只输最简格式,如
ssh ubuntu@123.123.123.123 - 端口、密钥路径等高级配置,统一写进
.ssh/config文件里,用Ctrl+Shift+P→Remote-SSH: Open SSH Configuration File...手动编辑 - config 示例:
Host my-cloud-server
HostName 123.123.123.123
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_rsa_cloud
首次连接失败大概率是远程机器缺 curl 或 wget
Remote-SSH 连接时,会在远程服务器上自动部署 vscode-server。这个过程依赖 curl 或 wget 下载二进制包。云服务器最小化安装(如 Debian netinst、Alibaba Cloud CentOS Stream)常默认不装这两个工具,结果卡在“Installing VS Code Server”阶段,终端里只显示空白或超时,日志里却有 command not found: curl。
- 提前登录服务器终端执行:
sudo apt update && sudo apt install -y curl(Debian/Ubuntu)或sudo yum install -y curl(CentOS/RHEL) - 验证是否就绪:
curl --version和which curl都应返回有效输出 - 别指望 VS Code 给你报这个错——它只会安静地重试三次然后断开
打开远程文件夹时反复要输密码,说明没配免密登录
每次点击“打开文件夹”都要输一遍密码,不只是麻烦,还暴露两个隐患:一是密码可能被中间人截获(尤其跳板机场景),二是 VS Code 的某些功能(如自动保存、Git 操作)会因认证中断而静默失败。
- 必须用 SSH 密钥对:本地生成
ssh-keygen -t ed25519 -C "your_email@example.com",再用ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@123.123.123.123推公钥 - 检查远程
~/.ssh/authorized_keys权限:必须是600,目录~/.ssh必须是700,否则 sshd 会拒绝密钥登录 - 本地测试:终端运行
ssh -i ~/.ssh/id_ed25519 ubuntu@123.123.123.123,不输密码就能进,才算真正通了
最难调的往往不是第一步连上,而是打开文件夹后 Git 状态不刷新、Python 解释器找不到、终端里 which python3 返回空——这些全是远程扩展没正确激活的表现,根源通常藏在 .ssh/config 的 ForwardAgent yes 是否开启、远程用户 shell 是否为 bash/zsh、以及 vscode-server 启动时的环境变量继承是否完整。先确保基础连接干净,再一层层往上叠功能。










