如何在 VSCode 中配置 SSH 密钥实现免密登录远程服务器?

文章导读
VSCode 通过 Remote - SSH 插件调用本地 SSH 客户端,配置公钥认证后可实现免密登录远程服务器。适用场景为本地开发机频繁连接同一台 Linux 服务器,风险边界是私钥文件权限必须限制为 600 且不能泄露。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

VSCode 通过 Remote - SSH 插件调用本地 SSH 客户端,配置公钥认证后可实现免密登录远程服务器。适用场景为本地开发机频繁连接同一台 Linux 服务器,风险边界是私钥文件权限必须限制为 600 且不能泄露。

先说结论:生成 SSH 密钥对并将公钥部署到服务器,VSCode 即可自动调用密钥完成认证。

  • 适合:本地开发机连接远程 Linux 环境,需频繁编辑文件或调试代码。
  • 先准备:安装 VSCode Remote - SSH 插件,确保本地已安装 OpenSSH 客户端。
  • 验收:VSCode 连接远程文件夹时不再弹出密码输入框,终端会话直接建立。

命令速用版

以下命令在本地终端执行,用于生成密钥并复制到服务器。

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

若本地无 ssh-copy-id 命令,需手动将公钥内容追加到服务器 ~/.ssh/authorized_keys 文件。

为什么会这样

SSH 协议支持公钥认证机制,VSCode 本身不存储密码,而是调用系统 SSH 客户端进行连接。

本地保存私钥,服务器保存公钥。连接时服务器用公钥加密挑战字符串,本地用私钥解密回应,验证通过则无需输入账户密码。VSCode 的 Remote - SSH 插件本质是封装了 SSH 命令行工具,继承本地 SSH 配置。

分步处理

步骤 1:生成 SSH 密钥对

在本地终端运行生成命令,建议选用 ed25519 算法,安全性高于 rsa。

ssh-keygen -t ed25519 -C "comment"

按提示保存路径,默认位于 ~/.ssh/id_ed25519,私钥权限自动设为 600。

如何在 VSCode 中配置 SSH 密钥实现免密登录远程服务器?

步骤 2:将公钥部署到服务器

使用 ssh-copy-id 命令自动传输公钥,需输入一次服务器密码。

ssh-copy-id user@hostname

若无此命令,手动查看本地公钥 cat ~/.ssh/id_ed25519.pub,复制内容到服务器 ~/.ssh/authorized_keys 末尾。

步骤 3:配置 VSCode Remote SSH

安装 Microsoft 官方 Remote - SSH 插件,点击左下角绿色图标,选择 Connect to Host。

若未自动识别,需在配置文件 ~/.ssh/config 中添加 Host 信息,指定 IdentityFile 路径。

怎么验证是否生效

在 VSCode 中选择远程主机连接,观察左下角状态栏是否显示远程主机名且无需密码弹窗。

如何在 VSCode 中配置 SSH 密钥实现免密登录远程服务器?

本地终端执行 ssh -v user@hostname,查看 debug 日志中 Authentication 部分是否显示 publickey 成功。

debug1: Next authentication method: publickey
debug1: Successfully authenticated.

常见坑

私钥权限过于开放:SSH 客户端拒绝加载权限大于 600 的私钥文件,需运行 chmod 600 ~/.ssh/id_ed25519 修复。

服务器禁止公钥登录:服务器 /etc/ssh/sshd_config 中 PubkeyAuthentication 必须设为 yes,PasswordAuthentication 可设为 no 以强制密钥登录。

配置文件路径错误:VSCode 在 Windows 下可能读取的是 PowerShell 用户目录下的 config 文件,需确认插件设置中的 Config File Path。

常见问题

连接时仍然提示输入密码怎么办

检查服务器 ~/.ssh/authorized_keys 文件权限是否为 600 或 644,且属主正确。

确认本地私钥路径是否在 SSH config 文件中正确指定,或尝试 ssh -i 参数手动指定密钥测试。

应该使用 rsa 还是 ed25519 密钥

优先使用 ed25519,生成速度更快且安全性更高,除非旧版服务器不支持该算法。

VSCode 在哪里修改 SSH 配置文件

点击左下角远程图标,选择 Settings,或直接编辑本地用户目录下的 .ssh/config 文本文件。

参考来源

  • Microsoft Learn, "Remote development over SSH", https://code.visualstudio.com/docs/remote/ssh
  • OpenSSH Manual, "ssh-keygen", https://man.openbsd.org/ssh-keygen