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 中执行以下命令收紧权限:
