VSCode 远程连接配置指南:Windows 环境下 SSH 公钥免密登录实践
摘要本文详细介绍了在 Windows 环境下为 VSCode 配置 SSH 公钥免密登录远程 Linux 服务器的完整流程。内容涵盖从背景目的、环境要求到生成 SSH 密钥对、部署公钥至服务器、验证免密登录状态以及最终在 VSCode 中配置 SSH Config 的具体步骤。文章最后还提供了常见问题如连接仍需密码、私钥文件权限警告的排查方法旨在帮助开发者实现高效、安全的远程开发环境搭建。1. 背景与目的在使用 VSCode 的 Remote-SSH 插件连接 Linux 服务器时默认采用密码验证机制。每次新建窗口、重载窗口或网络波动导致断线重连时均需重新输入密码这在一定程度上影响了开发效率。通过配置 SSH 公钥免密登录可以实现以下目标消除频繁输入密码的交互中断。提升身份验证的安全性基于非对称加密。加快连接建立的速度。2. 环境要求本地操作系统Windows 10 / Windows 11需启用 OpenSSH Client。远程操作系统Linux 发行版如 Ubuntu, CentOS, Debian 等。开发工具Visual Studio Code 及 Remote-SSH 扩展。3. 配置步骤3.1 在本地生成 SSH 密钥对打开 PowerShell 或命令提示符CMD执行以下命令生成 RSA 密钥对ssh-keygen -t rsa -b 4096执行过程中的交互提示处理如下Enter file in which to save the key...按回车键使用默认路径通常为C:\Users\用户名\.ssh\id_rsa。Enter passphrase (empty for no passphrase):按回车键留空。若设置密码后续连接仍需输入该密码无法实现完全免密。Enter same passphrase again:再次按回车键。当终端输出Your identification has been saved in...与Your public key has been saved in...时表明密钥生成成功。3.2 将公钥部署至远程服务器需将本地生成的公钥文件id_rsa.pub内容追加至远程服务器的~/.ssh/authorized_keys文件中并设置严格的文件权限。在 PowerShell 中执行以下命令请将用户名和ip替换为实际值type C:\Users\用户名\.ssh\id_rsa.pub | ssh 用户名ip mkdir -p ~/.ssh cat ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys注意事项执行此命令时系统会要求输入最后一次服务器密码。若命令执行完毕后终端光标直接返回且无任何报错信息则表明公钥已成功写入。chmod 700 ~/.ssh与chmod 600 ~/.ssh/authorized_keys为必要操作。OpenSSH 对权限要求严格若目录或文件权限过于开放服务器将拒绝基于密钥的认证。3.3 验证免密登录状态在配置 VSCode 之前建议先在终端层面验证 SSH 配置是否生效ssh 用户名ip若无需输入密码即可直接进入远程服务器的 Shell 环境则底层 SSH 免密配置已成功。3.4 配置 VSCode SSH Config在 VSCode 中按下Ctrl Shift P输入并选择Remote-SSH: Open SSH Configuration File。选择本地配置文件通常为C:\Users\用户名\.ssh\config。在文件中添加或修改以下配置项Host MyLinuxServer HostName ip User 用户名 IdentityFile C:\Users\用户名\.ssh\id_rsa ServerAliveInterval 60配置说明IdentityFile必须指向本地私钥的绝对路径确保 VSCode 能够正确读取。ServerAliveInterval 60可选配置。设置客户端每 60 秒向服务器发送一次保活包有效防止因长时间无操作导致的连接断开。4. 常见问题排查问题 1配置完成后连接时仍提示输入密码检查文件权限登录服务器执行ls -ld ~/.ssh和ls -l ~/.ssh/authorized_keys确认目录权限为drwx------(700)文件权限为-rw-------(600)。检查私钥路径确认 VSCode 配置文件中的IdentityFile路径正确且文件确实存在。问题 2终端提示WARNING: UNPROTECTED PRIVATE KEY FILE!这是由于 Windows 环境下私钥文件的访问控制列表ACL权限过于宽松所致。可在 PowerShell 中执行以下命令收紧权限