VSCode 远程开发服务器 Linux 环境怎么配置免密登录

文章导读
VSCode 远程开发本质上是通过 SSH 协议连接,配置免密登录就是配置标准的 SSH 密钥认证,不需要在 VSCode 内部做特殊设置,重点在于本地密钥生成和远程权限校验。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

VSCode 远程开发本质上是通过 SSH 协议连接,配置免密登录就是配置标准的 SSH 密钥认证,不需要在 VSCode 内部做特殊设置,重点在于本地密钥生成和远程权限校验。

先说结论:VSCode 远程连接依赖本地 SSH 配置,实现免密需在本地生成密钥并将公钥部署到远程服务器。

VSCode 远程开发服务器 Linux 环境怎么配置免密登录
  • 适合需要频繁连接远程 Linux 服务器进行开发的场景
  • 先准备本地 SSH 客户端及可写入的远程服务器账号
  • 验收VSCode 连接远程时不再提示输入密码且终端可直接 SSH 登录

命令速用版

以下命令在本地终端执行,假设远程用户为 user,IP 为 192.168.1.100:

ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id user@192.168.1.100
ssh user@192.168.1.100

如果提示 ssh-copy-id 不存在,可手动复制公钥内容到远程 ~/.ssh/authorized_keys。

VSCode 远程开发服务器 Linux 环境怎么配置免密登录

为什么会这样

VSCode 的 Remote - SSH 扩展并不自己实现协议,而是调用你操作系统自带的 SSH 客户端。因此,只要你在系统终端里能免密 SSH 登录,VSCode 就能免密连接。所谓的“配置 VSCode 免密”,实际上就是配置操作系统的 SSH 免密。

VSCode 远程开发服务器 Linux 环境怎么配置免密登录

分步处理

  1. 检查本地密钥:运行 ls -la ~/.ssh,查看是否有 id_rsa 或 id_ed25519。如果没有,运行 ssh-keygen 生成,一路回车即可。
  2. 发送公钥到远程:优先使用 ssh-copy-id user@host。如果失败,手动 cat ~/.ssh/id_ed25519.pub 复制内容,登录远程服务器后 echo 追加到 ~/.ssh/authorized_keys。
  3. 修正远程权限:这是最容易出错的地方。在远程服务器上执行 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys。权限过宽会导致 SSH 服务端拒绝密钥认证。
  4. 检查 SSH 服务端配置:确保远程 /etc/ssh/sshd_config 中 PasswordAuthentication 没有强制关闭(除非你只打算用密钥),且 PubkeyAuthentication yes。

怎么验证是否生效

在本地终端运行 ssh user@host,如果直接登录进入 shell 而没有提示输入密码,说明 SSH 层配置成功。随后打开 VSCode,点击左下角远程窗口,选择 Connect to Host,如果不再弹出密码输入框且能成功加载远程资源管理器,即表示配置生效。

常见坑

  • 权限问题:远程家目录或.ssh 目录权限过于开放(如 777),SSH 服务端会出于安全忽略密钥文件。
  • 密钥类型:部分旧版 SSH 服务端不支持 ed25519,如遇连接失败可尝试生成 rsa 密钥 ssh-keygen -t rsa。
  • 配置文件冲突:本地 ~/.ssh/config 中如果有错误的 Host 配置或 IdentityFile 路径指向错误,会干扰 VSCode 连接。
  • SELinux:在 CentOS/RHEL 等开启 SELinux 的系统上,手动创建 authorized_keys 可能需要恢复上下文 restorecon -R ~/.ssh。

参考来源

  • Microsoft Visual Studio Code Docs, "Working with remote servers via SSH", https://code.visualstudio.com/docs/remote/ssh
  • OpenSSH Manual Pages, "ssh-copy-id", https://man.openbsd.org/ssh-copy-id