优先用 ed25519:速度快、密钥短、安全性更高,ubuntu 22.04 默认支持;仅当遇到老旧服务器(如 centos 6 或 openssh 版本过低)不支持时,才退选 rsa。

能实现,但关键不在 VSCode 本身,而在于本地 SSH 客户端是否已用密钥完成认证 —— VSCode 的 Remote-SSH 插件只是复用系统 SSH 配置,它不参与密钥生成或身份校验。
ssh-keygen 生成密钥时选 ed25519 还是 rsa?
优先用 ed25519:速度快、密钥短、安全性更高,Ubuntu 22.04 默认支持。只有遇到老旧服务器(如 CentOS 6 或 OpenSSH rsa -b 4096。
- 生成命令:
ssh-keygen -t ed25519 -C "vscode@dev" - 不要把私钥存到 OneDrive / iCloud / 微信文件传输助手里 —— 同步服务可能破坏权限或引入换行符
- 如果设置了 passphrase(推荐),VS Code 启动时会调用系统 ssh-agent 自动解锁,无需重复输入
公钥上传后仍提示输密码?检查 authorized_keys 权限
这是最常被忽略的失败点:SSH 守护进程对 ~/.ssh 目录和 authorized_keys 文件权限极其敏感,权限过宽会直接禁用密钥登录,回退到密码验证。
- 远程服务器上执行:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys - 确认
sshd_config中这两项没被注释且值为 yes:PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys - 别用 root 用户测试后就认为 OK —— 换成你实际要用的用户(如
ubuntu)再试一次,因为权限是按用户目录隔离的
VSCode 连接时卡在“正在下载 vscode-server”?离线场景要手动部署
当远程服务器无法访问公网(如内网环境、安全加固服务器),VSCode 会自动尝试从微软 CDN 下载 vscode-server,失败即卡住。必须离线部署。
- 先在本地 VSCode 的 Help → About 里复制 Commit ID(一串 40 位 hex 字符)
- 下载两个包:
vscode-server-linux-x64.tar.gz和vscode_cli_alpine_x64_cli.tar.gz,URL 中替换${commit_id} - 上传后,在服务器上解压并重命名:
mv vscode-server-linux-x64 ~/.vscode-server/bin/${commit_id} - 确保
~/.vscode-server/bin/${commit_id}/bin/code-server可执行(chmod +x)
真正容易被绕开的环节是:VSCode 不会告诉你密钥权限错在哪一层 —— 它只报“Permission denied (publickey)”,而问题可能出在本地私钥权限(600)、远程 .ssh 目录权限(700)、远程 authorized_keys 权限(600)、甚至远程用户主目录的组写权限(若 group-writable,OpenSSH 也会拒绝)。逐层验证比反复重装插件有效得多。











