kr项目架构全景图:从CLI到守护进程、SSH Agent与PGP签名一文读懂
【免费下载链接】krDEPRECATED A dev tool for SSH auth Git commit/tag signing using a key stored in Krypton.项目地址https://gitcode.com/gh_mirrors/kr/kr点击查看免费下载kr是一个让手机Krypton App代替电脑保管 SSH 密钥的开发者工具krCLI 负责配对与日常操作后台守护进程krd以 SSH Agent 身份拦截签名请求krssh代理 SSH 连接并验证主机身份krgpg则把 Git commit/tag 签名转发到手机完成 PGP 签名。全文带你从 CLI 到守护进程一图读懂 kr 的 SSH 认证 Git 签名架构。⚠️ 先说明该项目已标记为DEPRECATED见 README.md后续开发转移至新的 akr 仓库。本文基于其 Go 源码解读架构设计依然对理解手机托管密钥 本地 Agent 代理这类系统很有参考价值。1. 一分钟认识 kr 是干什么的传统做法是在电脑上生成 SSH 密钥对私钥躺在~/.ssh/里Git 签名则依赖本机 gpg 密钥环。一旦电脑失窃或中毒私钥就可能泄露。kr 的思路是把私钥整个挪到手机里 私钥只存在于 Krypton 手机 App 的安全存储中永不出手机 电脑端只保留公钥所有用私钥签名的动作都会实时转发到手机由用户逐次批准 通信链路全程加密配对密钥由本地与手机双方协商生成。整个系统由4 个可执行文件组成入口代码都在src/目录下可执行文件一句话职责源码入口kr命令行客户端配对、查看公钥、配置 Git 签名、上传公钥到各云src/kr/kr.gokrd守护进程daemon内置 SSH Agent 控制服务器系统的总机src/krd/main.gokrsshSSH 代理客户端劫持 SSH 握手拿到真实主机名防止中间人欺骗src/krssh/main.gokrgpggpg 兼容前端Git 提交/标签签名请求转发到手机src/krgpg/main.go构建规则见 Makefile一条make install即可编译并安装全部 4 个二进制到$(PREFIX)/bin。2. 架构全景一次签名请求的完整旅程先看整体协作关系数据流向┌────────────────────────── 计算机 ──────────────────────────┐ │ ssh 客户端 ──▶ krssh解析主机密钥──▶ hostAuth socket │ │ git commit ──▶ krgpg ──────────────┐ │ │ kr 命令 ───────────────────────────┤ Unix socket (HTTP) │ │ ▼ │ │ ┌──── krd 守护进程 ────┐ │ │ │ ControlServer │ │ │ │ (配对/查询 REST) │ │ │ │ SSH Agent 服务 │ │ │ │ EnclaveClient ◀───┼── 加解密/队列 │ │ └────────┬────────────┘ │ └─────────────────────────────┼─────────────────────────────┘ AWS SQS 队列 SNS 推送加密密文 ▼ Krypton App私钥所在地人工批准一次git commit签名的旅程大致是Git 调用配置好的krgpg做分离签名krgpg通过 Unix socket 把 commit 内容发给krdkrd的EnclaveClient加密消息经 AWS SQS/SNS 发到手机手机弹出批准界面用户确认后返回签名krgpg把 ASCII armor 签名写回 stdoutGit 完成签名提交。SSH 认证是同样的链路只是请求方换成了SSH Agent 协议签名目标是登录会话而非 commit。3. krd 守护进程系统的总机启动入口 src/krd/main.go 非常精炼启动后同时监听 3 个 Unix socketSocket作用谁在连它krd.sock控制内嵌 HTTP 服务暴露 REST 接口kr客户端、krgpgkrd-agent.sockAgent标准 SSH Agent 协议[PROTOCOL.agent]ssh 客户端通过SSH_AUTH_SOCKhostAuth.sock接收 krssh 上报的主机密钥信息krssh控制服务器 src/daemon/control/server.go 注册了 4 个路由/version版本检查、/pairGET 查询 / PUT 发起配对 / DELETE 解除配对、/enclave转发任意签名请求到手机、/ping。也就是说krCLI 与守护进程之间用的正是HTTP over Unix socket这种简单可靠的通信方式。Agent 服务由 src/daemon/ssh_agent.go 的ServeKRAgent启动每个连接一个 goroutine 处理。4. SSH Agent 实现拦截签名支持优雅降级Agent 层src/daemon/ssh_agent.go实现了完整 SSH Agent 接口的核心两点List直接从本地缓存的 Profile 返回 Krypton 公钥不必惊动手机Sign关键路径src/daemon/ssh_agent.go。收到签名请求后先查原始终端 AgentSSH_AUTH_SOCK指向的其他 agent命中的本地密钥直接用否则从签名负载中解析出 session ID关联 krssh 上报的主机认证信息让你确认我在登录哪台机器通过EnclaveClient.RequestSignature把签名请求发往手机等待用户批准手机拒绝 → 通知 krssh 杀掉会话超时 → 自动回退到本地密钥保证不卡住工作流。这种主路径手机、失败回退本地的降级策略是 kr 可用性设计的亮点。5. krssh 代理客户端为什么手机知道你在登录哪台主机这是架构里最有意思的一环。SSH 客户端默认只显示Host key verification failed之类的模糊提示krssh 解决到底在连哪台机器的问题作为ProxyCommand插入 SSH 链路透明转发两端字节流src/krssh/main.go解析 SSH 数据包src/krssh/main.go在密钥交换回复中提取服务端主机密钥 签名连同主机名打包成HostAuth经hostAuth.sock上报给 krdsrc/krssh/main.go于是手机批准弹窗能显示真实主机名并且用户还可以在 Krypton 里钉住主机公钥——如果下次握手的公钥不一致krd 会回传HOST_KEY_MISMATCHkrssh 直接终止会话src/krssh/main.go。Agent 侧的验证逻辑在 src/daemon/ssh_agent.go用上报的主机公钥验证它对 session ID 的签名确属同一会话才把HostAuth附进签名请求。6. krgpg伪装成 gpg 的 Git 签名前端krgpg/main.go 的策略是能拦截就拦截拦不住就转发当 Git 以--bsaudetach-sign ascii armor方式调用时进入 Krypton 签名路径tree开头 → 解析 commitparent/author/committer/message→GitSignRequest发给手机src/krgpg/main.goobject开头 → 解析 tag 对象同样的流程src/krgpg/main.go其他 gpg 用法一律透传给本机真实gpgsrc/krgpg/main.goKrypton 签名失败时也会回退到本地 gpg 密钥环签名成功后伪造一行[GNUPG:] SIG_CREATED状态输出让 Git 认为签名顺利完成。配套的kr codesign命令定义于 src/kr/kr.go负责把git config的签名程序指向krgpg并提供on/off/test/uninstall子命令管理自动签名。7. Enclave 通信层加密、队列与推送真正对接手机的是EnclaveClientsrc/daemon/enclave/enclave.go核心职责配对Pair()生成PairingSecret含端到端加密密钥手机扫码后双方激活配对密钥经 src/common/persistance/ 持久化到~/.kr收发所有消息先经配对密钥加密再通过 src/common/transport/transport.go 的AWSTransport发送——底层是AWS SQS 队列双向SNS 推送唤醒手机 App请求追踪用 LRU 缓存维护请求 ID → 回调映射支持 ACK用户已收到提醒后延长等待超时离线容错手机还没回传解包密钥时出站消息进入outgoingQueue排队密钥就位后自动补发。协议细节配对密钥派生、请求/响应结构、超时策略集中在 src/common/protocol/ 目录pair.go、request.go、timeouts.go、host_auth.go。8. kr CLI 与部署运维kr客户端的全部命令注册在 src/kr/kr.go常用的几类命令作用kr pair/kr unpair与手机配对终端显示二维码/ 解除配对kr mekr me pgp打印 SSH / PGP 公钥kr copy、kr github、kr aws、kr gcp等拷贝公钥并自动打开对应平台添加密钥的设置页kr codesign开启/关闭/测试 Git 自动签名kr restart/kr upgrade/kr uninstall守护进程运维适配 apt / yum / yaourtkr transfer换手机时把服务器访问权移交给新设备部署方面Linux 依赖 systemd 拉起 krdkr restart通过nohup krd兜底见 src/kr/kr_unix.go打包脚本在 install/os.sh、install/rpm/kr.spec、install/debian/macOS 使用 LaunchAgents 自启动plist 见 install/macos/share_ext/co.krypt.krd.plist调试用环境变量KR_SILENCE_WARNINGS、KR_LOG_LEVEL等由kr env输出定义在 src/kr/kr.go。9. 架构小结值得借鉴的 4 个设计点职责分离CLI / 守护进程 / SSH 代理 / GPG 前端各司其职全部通过本地 Unix socket 解耦任何一环都可以单独测试src/下各模块自带_test.go私钥永不出手机所有签名都是请求-批准-返回的远程调用计算机端只持有公钥与缓存 Profile可用性降级SSH 签名超时回退本地 agentGit 签名失败回退本地 gpg工具链不会成为单点故障主机身份前置校验krssh 把你在登录哪台机器变成手机批准弹窗里的显式信息并支持公钥钉扎防 MITM。核心源码路径速查守护进程入口src/krd/main.go控制服务器src/daemon/control/server.goSSH Agentsrc/daemon/ssh_agent.go手机通信层src/daemon/enclave/enclave.go传输层AWS SQS/SNSsrc/common/transport/transport.go协议与配对src/common/protocol/pair.go持久化src/common/persistance/file_persister.goSSH 代理src/krssh/main.goGit 签名前端src/krgpg/main.go 再次提醒kr 已停止维护DEPRECATED新项目建议关注其继任者 akr但密钥托管到移动设备 本地 Agent 代理签名的这套架构模式至今仍是很好的学习样本。赞分享【免费下载链接】krDEPRECATED A dev tool for SSH auth Git commit/tag signing using a key stored in Krypton.项目地址https://gitcode.com/gh_mirrors/kr/kr点击查看免费下载相关推荐一文读懂 BakaSU 三层架构内核模块、Rust 守护进程与 Compose 管理器全景拆解一文读懂 BakaSU 三层架构内核模块、Rust 守护进程与 Compose 管理器全景拆解 BakaSU 是一款基于 KernelSU 的 Android深度拆解 tty7 源码从 CLI 到守护进程的 6 Crate 纯 Rust 架构全景图深度拆解 tty7 源码从 CLI 到守护进程的 6 Crate 纯 Rust 架构全景图 tty7 是一个纯 Rust 编写的终端工作台采用 GPU 渲染SSH Agent实战kr如何拦截签名请求并转发到手机一键授权SSH Agent实战kr如何拦截签名请求并转发到手机一键授权 为什么要把 SSH 授权交给手机 传统 SSH 登录依赖存放在电脑上的私钥文件如 ~/.s创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Missile DATCOM气动估算实战:从Fortran编译到MATLAB实时建模

Missile DATCOM气动估算实战:从Fortran编译到MATLAB实时建模

简介:本资源是面向导弹气动设计工程师与飞行器专业高年级学生/研究生的专用计算工具包,提供基于美国空军DATCOM方法论的快速气动参数估算能力,重点解决导弹升力系数、阻力系数等关键气动特性在不同马赫数与攻角下的预估难题。压缩包共28个文件…

2026/10/19 10:08:33 阅读更多 →
ZYNQ PL-PS数据通路实战:AXI DMA+Linux驱动+TCP零拷贝传输

ZYNQ PL-PS数据通路实战:AXI DMA+Linux驱动+TCP零拷贝传输

简介:本资源是一套面向嵌入式FPGA开发者的ZYNQ平台PL-PS协同通信实战工程,聚焦于通过以太网TCP协议实现FPGA逻辑与ARM处理器间数据交互,并可靠上传至上位机,适用于具备Verilog/VHDL和嵌入式C基础的中高级工程师及研究生。压缩包为…

2026/10/19 8:22:50 阅读更多 →
ASP.NET项目化教程:从数据库到IIS部署的全链路实战

ASP.NET项目化教程:从数据库到IIS部署的全链路实战

简介:本资源是面向高校计算机专业学生及.NET初学者的ASP.NET网站开发实战教程配套源码包,聚焦图书管理系统这一典型Web项目,系统覆盖页面生命周期、MVC架构、C#核心编程、ADO.NET与Entity Framework数据库操作、Web API构建及IIS部署等关键技…

2026/10/18 13:47:27 阅读更多 →

最新新闻

如何做好开放式Code Review:一套可落地的团队评审实践

如何做好开放式Code Review:一套可落地的团队评审实践

1. 为什么我坚持把 Code Review 做成“开放式”的先聊点实在的。我做了十几年开发,带过团队,也经历过各种规模的评审流程,从两个人结对互相看代码,到几十人团队的正式评审会议,都试过。一个特别明显的感受是&#xff1…

2026/10/19 21:39:49 阅读更多 →
WinForms DataGridView下拉框动态绑定与联动实战

WinForms DataGridView下拉框动态绑定与联动实战

简介:本资源是一份面向C#初学者与Windows桌面开发者的实用代码实践包,聚焦解决DataGridView控件中动态集成下拉列表(ComboBox)这一高频交互需求,适用于数据录入界面、配置管理模块等实际业务场景。压缩包共22个文件&am…

2026/10/19 21:39:49 阅读更多 →
以沟通为中心的坐席工作台:DeskcommCRM的设计与实践

以沟通为中心的坐席工作台:DeskcommCRM的设计与实践

1. 坐席工作台的现实困境:DeskcommCRM 要解决的真正问题1.1 痛点:每天在五个系统之间来回切换我这几年见过太多客服团队和销售团队的真实工作状态:早上打开电脑,登录客服工单系统看排队,打开IM工具回消息,切…

2026/10/19 21:39:49 阅读更多 →
开放式代码审查:构建高效协作与质量保障的工程实践

开放式代码审查:构建高效协作与质量保障的工程实践

1. 项目概述:为什么我们需要"开放"的代码审查先说结论:open-code-review 不是什么高深莫测的框架,它是一套把 code review 从"走流程"变成"沉淀技术资产"的工程实践方案。我把它理解成三件事的组合&#xff1a…

2026/10/19 21:39:49 阅读更多 →
STM32H743 FPU加速FFT实战:1024点仅300us,电机电流环救星

STM32H743 FPU加速FFT实战:1024点仅300us,电机电流环救星

简介:这份资源面向STM32嵌入式开发者与数字信号处理学习者,提供一套基于STM32H743、通过STM32CubeMX搭建的纯净FFT验证例程,解决全网缺少简单直接FFT性能验证工程的问题。压缩包共1698个文件,约49.05MB,以C源码与头文件…

2026/10/19 21:39:49 阅读更多 →
超越向量搜索:智能体AI场景下的混合检索架构设计与落地实践

超越向量搜索:智能体AI场景下的混合检索架构设计与落地实践

如果你最近在搭智能体AI方向的Agent,大概率跟我一样,先被向量搜索的行云流水惊艳过,然后被它的失忆气到过。上个月我处理了一个内部运维问答Agent的案子,用户可以问技术文档、查故障码、翻历史变更记录。最开始整套检索链路就一个…

2026/10/19 21:38:47 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →