当前位置: 首页 > news >正文

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

执行过程中的交互提示处理如下:

  1. Enter file in which to save the key...:按回车键,使用默认路径(通常为C:\Users\<用户名>\.ssh\id_rsa)。
  2. Enter passphrase (empty for no passphrase)::按回车键,留空。若设置密码,后续连接仍需输入该密码,无法实现完全免密。
  3. 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 ~/.sshchmod 600 ~/.ssh/authorized_keys为必要操作。OpenSSH 对权限要求严格,若目录或文件权限过于开放,服务器将拒绝基于密钥的认证。

3.3 验证免密登录状态

在配置 VSCode 之前,建议先在终端层面验证 SSH 配置是否生效:

ssh <用户名>@<ip>

若无需输入密码即可直接进入远程服务器的 Shell 环境,则底层 SSH 免密配置已成功。

3.4 配置 VSCode SSH Config

  1. 在 VSCode 中按下Ctrl + Shift + P,输入并选择Remote-SSH: Open SSH Configuration File
  2. 选择本地配置文件(通常为C:\Users\<用户名>\.ssh\config)。
  3. 在文件中添加或修改以下配置项:
Host MyLinuxServer HostName <ip> User <用户名> IdentityFile C:\Users\<用户名>\.ssh\id_rsa ServerAliveInterval 60

配置说明:

  • IdentityFile:必须指向本地私钥的绝对路径,确保 VSCode 能够正确读取。
  • ServerAliveInterval 60:可选配置。设置客户端每 60 秒向服务器发送一次保活包,有效防止因长时间无操作导致的连接断开。

4. 常见问题排查

问题 1:配置完成后,连接时仍提示输入密码

  • 检查文件权限:登录服务器,执行ls -ld ~/.sshls -l ~/.ssh/authorized_keys,确认目录权限为drwx------(700),文件权限为-rw-------(600)。
  • 检查私钥路径:确认 VSCode 配置文件中的IdentityFile路径正确,且文件确实存在。

问题 2:终端提示WARNING: UNPROTECTED PRIVATE KEY FILE!
这是由于 Windows 环境下私钥文件的访问控制列表(ACL)权限过于宽松所致。可在 PowerShell 中执行以下命令收紧权限:

http://www.jsqmd.com/news/1147752/

相关文章:

  • ESP32-S3-CAM多型号摄像头驱动(GC2145/GC2640/OV2640/OV3660/OV5640)附完整源码与测试程序
  • C盘满了怎么办?教你按场景挑对8种清理方法
  • MDP 主数据平台 1.4.0 发布, 开放平台安全加密体系全面重构升级
  • 【资源编号322】高德地图车机版 9.1.0.600087 正式版(魔改小德特供)版本说明
  • 2026年自助KTV品牌大比拼,哪家更受年轻人青睐?
  • STM32与BMI160传感器开发实战指南
  • 打破信息差:不同行业做YOLO落地,最容易被忽略的3个核心痛点
  • A3908电机驱动器与dsPIC33EP运动控制方案解析
  • 2026年选系船柱材质?这几种常见的值得一看!
  • 低成本撬动高增长!日增成交额2万+,这家女装店凭什么在抖音商城“掘金”?
  • 2026年实用降AI率工具:实测AI率从90%降至4%的实用方案
  • IIM-20670运动传感器与PIC24FV32KA301微控制器的工业应用
  • 【SpringBoot WebFlux篇】彻底弄懂WebFlux!异步非阻塞响应式编程入门详解
  • 企业级IM即时通讯系统:打造安全、高效、稳定的新一代沟通解决方案#极光鸟IM#灰鲸im
  • 乌鲁木齐公考机构TOP5口碑榜:2026年性价比谁最高?
  • BERT模型学习笔记
  • LangChain / Core components / Agents
  • 微信小程序开发公司怎么选?功能、售后和上线周期分析
  • 林沛群机器人之运动学笔记—0-1
  • 在C++语言中不能重载运算符的是哪些
  • IIM-20670运动传感器与PIC32MZ MCU的高性能组合解析
  • 国产PLM有哪些适配新能源电池?主流厂商技术路线与布局盘点
  • 理士蓄电池靠谱商家筛选:企业采购决策实用策略FAQ
  • D3KeyHelper终极指南:如何快速配置暗黑3专业级按键宏工具
  • AI 视频智能体系统搭建:从 1 条爆款到日产成片的反推提示词实战
  • 计算机毕业设计之基于SSM框架的渔具销售管理系统的设计与实现
  • PostgreSQL 18 主从架构实战:3步配置流复制,实现读写分离与高可用
  • STM32F417ZG与MCP3428高精度数据采集系统设计
  • 机器人安全置信预测:视觉特征与任务嵌入协同的风险预判架构
  • 网红护眼灯为什么不护眼?拆解市面主流灯具避坑指南