在windows平台上通过ssh-agent实现git凭证持久化

news/2025/12/4 15:31:57/文章来源:https://www.cnblogs.com/PeterZ1997/p/19307468

在 Windows 上实现持久的 Git SSH 认证:告别重复输入密码

引言

在日常开发中,使用 SSH 密钥对 Git 私有仓库进行认证是一种常见且安全的方式。然而,许多 Windows 用户都遇到过这样的困扰:每次打开新的终端窗口进行 Git 操作时,都需要重新输入 SSH 私钥的密码。这不仅打断了工作流,也降低了效率。

问题的根源在于,Git for Windows 自带的 SSH 套件其生命周期受限于单个命令行会话。一旦关闭窗口或启动新的独立 Git 命令进程,之前缓存的认证上下文便会丢失。

本文将介绍如何利用 Windows 10/11 自带的 OpenSSH 身份验证代理服务,实现一套系统级、持久化的 SSH 密钥管理方案,并完美支持多 Git 账号场景,让你彻底告别重复输入密码的烦恼。

关于多 Git 账号配置:本文聚焦于认证持久化,多账号 SSH 密钥的配置细节可参考笔者之前的文章《在 Windows 平台上如何做到 Git 多 SSH-Key 兼容》,其核心在于 ~/.ssh/config 文件的主机别名映射。

解决方案概览

传统的 Git for Windows SSH 代理是进程级的,而我们需要的是一套系统级服务。解决方案的核心在于启用并配置 Windows 内置的 OpenSSH Authentication Agent 服务,它将作为所有 SSH 认证请求的中央管理器,其生命周期与系统绑定,而非某个终端窗口。

参考资料

  1. 在windows平台上如何做到git多ssh-key兼容

详细步骤

第一步:准备 SSH 密钥对

如果你还没有密钥,可以使用以下命令生成。这里以更现代、更安全的 ED25519 算法为例:

# 为用户1生成密钥
ssh-keygen -t ed25519 -C "user1@example.com" -f ~/.ssh/id_ed25519_user1# 为用户2生成密钥
ssh-keygen -t ed25519 -C "user2@example.com" -f ~/.ssh/id_ed25519_user2

生成时,系统会提示你为私钥设置一个密码(passphrase)。请务必牢记此密码,后续我们只需输入一次。

第二步:配置 SSH 客户端 (~/.ssh/config)

为了让系统区分不同的 Git 服务或账号,需要在 ~/.ssh/config 文件中进行主机别名配置。

# 用户 user1 的配置
Host github-user1HostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_user1IdentitiesOnly yes# 注意:切勿设置 ‘IdentityAgent none’,否则将绕过代理服务# 用户 user2 的配置
Host github-user2HostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_user2IdentitiesOnly yes

关键说明

  • Host 是一个自定义的别名(如 github-user1),后续在克隆或设置远程仓库时需使用此别名。
  • IdentityFile 指向对应的私钥。
  • IdentitiesOnly yes 确保 SSH 只尝试指定的密钥,不试探其他默认密钥。
  • 切勿添加 IdentityAgent none:此选项会强制 SSH 客户端忽略代理,直接读取磁盘上的私钥文件,从而导致每次都需要输入密码。

第三步:启用并配置 Windows OpenSSH 代理服务

这是实现持久化的核心步骤。我们将把 SSH 代理作为一个 Windows 服务来运行。

  1. 通过服务管理器启用

    • 按下 Win + R,输入 services.msc 并回车。
    • 在服务列表中找到 OpenSSH Authentication Agent
    • 双击打开属性,将“启动类型”设置为 自动,然后点击“启动”按钮,最后点击“确定”。
  2. 通过 PowerShell(管理员)配置

    • 在开始菜单中搜索“PowerShell”,右键选择 “以管理员身份运行”
    • 执行以下命令以确保服务已启用并自动启动:
      Set-Service -Name ssh-agent -StartupType Automatic
      Start-Service ssh-agent
      Get-Service ssh-agent | Select-Object Status, StartType
      
      确认输出中 StatusRunningStartTypeAutomatic

第四步:将私钥添加到系统代理

服务启动后,我们需要将私钥“托管”给它。在刚才的管理员 PowerShell 中执行:

# 请注意使用 Windows 风格的绝对路径
ssh-add C:\Users\<你的用户名>\.ssh\id_ed25519_user1
ssh-add C:\Users\<你的用户名>\.ssh\id_ed25519_user2

执行每条命令后,输入一次该私钥的密码。只需输入这一次,之后系统重启也无需再次输入。

第五步:验证密钥加载状态

在普通 PowerShell 或 CMD 中运行以下命令验证:

ssh-add -l

如果成功,你将看到类似如下的输出,列出了已加载密钥的指纹:

256 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user1@example.com (ED25519)
256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy user2@example.com (ED25519)

第六步:强制 Git 使用系统 SSH 客户端(关键)

为确保 Git 命令(如 git pull, git push)使用我们刚刚配置好的系统代理,需要设置全局配置:

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

此命令告知 Git 使用 Windows 原生的 SSH 客户端,而非其自带的版本,从而能够连接到系统级的 ssh-agent 服务。

第七步:测试 SSH 连接

现在,使用你在 config 文件中配置的 Host 别名进行测试:

# 测试 user1 的配置
ssh -T git@github-user1# 测试 user2 的配置
ssh -T git@github-user2

如果一切顺利,你将直接看到 GitHub 的成功认证欢迎信息(例如 Hi username! You‘ve successfully authenticated...),而不会出现密码输入提示

第八步:使用与测试 Git 操作

  1. 克隆仓库时,使用配置的 Host 别名:

    git clone git@github-user1:username/repo.git
    
  2. 对于已有仓库,可修改远程地址以匹配别名:

    git remote set-url origin git@github-user1:username/repo.git
    
  3. 之后执行任何 git fetch, git push 操作,都应实现无感知的自动认证。

第九步:Git Bash兼容性处理

如果你同时使用 Git Bash(一个基于 Cygwin 的模拟环境),可能会发现其中的 ssh-add -l 命令无法连接到系统代理。这是因为 Git Bash 有自己的 PATH 环境优先级和可能的命令缓存。这个问题笔者尝试了多种方案,但尚未完全解决,待以后找到合适解法后再追更。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/986940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南京留学中介大比拼:谁的性价比与服务更胜一筹?

选留学中介,“服务好” 与 “性价比高” 缺一不可 —— 仅服务优质却收费虚高、或仅价格低却服务缩水,都难称理想选择。下面结合服务覆盖、资源质量与收费合理性的均衡度,用百分制评分看 8 家机构谁能做到 “服务不…

2025年重庆高端私宅装修设计公司权威推荐榜单:大平层设计‌/别墅设计‌/大宅设计‌源头公司精选

在重庆高端家装市场,超过60%的客户选择总包交付模式,其中以别墅、大平层为代表的私宅设计正成为专业设计公司的主战场。 随着重庆高端住宅市场的发展,消费者对私宅装修的需求正从功能性向“个性化、艺术化、智能化”…

使用DTS迁移软件迁移oracle到DM

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

松鼠Ai学习机好用吗?

松鼠Ai学习机好用吗?在智能教育硬件市场规模突破800亿元的今天,Ai学习机已成为家庭教育标配产品。然而行业调研显示,76%的家长在选择Ai学习机时面临"智能程度不足"、"内容资源陈旧"、"个性…

【ArcMap】投影坐标系转换为地理坐标系(永久)

Input Dataset or Feature Class: 选择你的数据 Output Dataset or Feature Class: 指定输出位置和名称(如:output_geo.shp) Output Coordinate System: 选择 China Geodetic Coordinate System 2000 转化完成后,关…

松鼠Ai人工智能教育怎么样?

松鼠Ai人工智能教育怎么样?在Ai人工智能教育快速发展的浪潮中,智适应学习技术正以每年42%的增速重塑教育行业生态。然而调研显示,78%的家长在选择Ai人工智能教育产品时面临"技术真实性难验证"、"教学…

【IEEE出版 | 上海理工大学主办】第六届机械自动化与智能制造国际学术会议(MAIM 2025)

【IEEE出版 | 上海理工大学主办】第六届机械自动化与智能制造国际学术会议(MAIM 2025)第六届机械自动化与智能制造国际学术会议(MAIM 2025) 2025年12月19-21日,中国上海 截稿时间:多轮截稿,官网为准 组织单位 主办单…

2025 共聚焦显微镜厂家推荐:聚焦核心技术,优选靠谱合作伙伴

在生物医学研究的活细胞动态观测、半导体行业的纳米级缺陷检测、新材料科学的三维结构分析等领域,共聚焦显微镜凭借高分辨率、光学分层成像的核心优势成为不可或缺的科研利器。随着国产光学技术的崛起,越来越多具备自…

2025年11月学习机品牌推荐:找准适配款,提分更高效

2025年11月学习机品牌推荐:找准适配款,提分更高效如今的学习机市场早已进入红海竞争阶段:新品牌层出不穷,老品牌不断推新,各类宣传噱头眼花缭乱 —— 有的标榜 “全科提分神器”,有的宣称 “AI 全能辅导”,甚至…

安卓-本地asr语音识别-将非流式处理成流式-应用层面简单处理转换

背景 众所周知,目前开源的asr语音识别引擎,有些是支持流式识别的,有些是不支持流式识别的。 流式识别的优势在于:人可以一直说,麦克风一直监听,识别文字结果一直输出,适合长时间机器对话、以及对话打断等。 而非…

小汽车托运平台哪家好?这份选型指南请收好

随着跨省出行、二手车流通、新能源汽车调运需求的持续升温,小汽车托运行业迎来快速发展。据中国汽车流通协会发布的《2023 年中国汽车物流行业蓝皮书》显示,2023 年全国小汽车托运需求量突破 1200 万辆次,同比增长 …

【IEEE出版 | 广州计算机学会主办】第五届计算机、物联网与控制工程国际学术会议(CITCE 2025)

【IEEE出版 | 广州计算机学会主办】第五届计算机、物联网与控制工程国际学术会议(CITCE 2025)第五届计算机、物联网与控制工程国际学术会议(CITCE 2025) 中国 广州 | 2025年12月19-21日 截稿时间:多轮截稿,官网…

2025年国内可靠的防雨箱供应商排名,充电桩防雨箱/开关防雨箱/监控防雨箱/防雨箱盖/不锈钢防雨箱源头厂家排名

行业背景分析 随着我国基础设施建设持续完善和智能化水平不断提升,防雨箱作为户外设备保护的关键部件,市场需求稳步增长。防雨箱产品广泛应用于电力、交通、安防、通信等领域,其质量直接影响设备运行的稳定性和使用…

MySQL 表误操作(RENAME + DROP)数据恢复技术文档

MySQL 表误操作( DROP)数据恢复技术文档 适用场景:开发误执行DROP TABLE new_yc;导致原始表数据丢失 **恢复目标**:还原RENAME操作前的原始表数据 **核心原理**:利用 MySQL binlog 中记录的 ROW 格式 DML 事件回…

【同济大学环境科学与工程学院主办】第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025)

【同济大学环境科学与工程学院主办】第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025)第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025) 2025年12月19-21日,中国上海 截稿时间:多轮…

激光切割设备2025年顶尖厂商综合实力权威推荐榜单

在高端制造领域,一把无形的“光刀”正悄然改变工业生产的面貌,它的精度可达头发丝的百分之一,它的热影响区几乎可以忽略不计。 随着工业4.0时代的深入发展,激光切割技术作为高端制造的核心工艺,正以前所未有的速度…

Redis主从哨兵模式连接踩坑全记录

Redis主从哨兵模式连接踩坑全记录 在分布式系统开发中,Redis主从哨兵模式是保障缓存高可用的常用架构,但实际配置过程中,往往会因密码认证、客户端适配等细节问题陷入困境。本次就分享一次从项目启动报错到最终稳定…

2025年汽车海外营销代运营公司推荐:B2B外贸企业Facebook、LinkedIn、TikTok、INS、Google一站式出海营销服务商精选(12月新版)

一、2025 年 B2B 外贸出海营销市场趋势​ ​ 随着全球贸易数字化加速,中国跨境出口电商持续保持高速增长,2020-2024 年复合年均增长率达 17.0%,占商品出口总额比例已提升至 35.3%。对于汽车类、机械设备等 B2B 企业…

精细化+强执行 路尚控股集团股东会议为管理升级提供新思路

日前,路尚控股集团会议暨股东会议在集团总部郑州隆重召开。来自全国各地的集团股东及核心管理层齐聚一堂,以“创新驱动、精益管理、聚力执行”为核心导向,共商企业发展大计,共谋高质量发展新路径,为集团下一阶段战…

2025 智能教育风口 松鼠 AI 自习室加盟靠谱分析

2025 智能教育风口 松鼠 AI 自习室加盟靠谱分析在"人工智能+教育"市场规模突破5000亿元的背景下,Ai人工智能自习室作为新兴业态正以年均68%的增速快速发展。然而行业调研显示,73%的意向投资人在考察Ai人工…