From e2162d8b18d93cfcd976dda949e527acaac13903 Mon Sep 17 00:00:00 2001 From: Cat Tom Date: Fri, 13 Mar 2026 16:45:56 +0800 Subject: [PATCH] pub picokeys.md --- docs/tech/Picokeys.md | 110 +++++++++++++++++++++++++++++++++++++++++- mkdocs.yml | 1 + 2 files changed, 109 insertions(+), 2 deletions(-) diff --git a/docs/tech/Picokeys.md b/docs/tech/Picokeys.md index 7a35caf..b243d63 100644 --- a/docs/tech/Picokeys.md +++ b/docs/tech/Picokeys.md @@ -126,11 +126,31 @@ ssh-keygen -t ed25519-sk -O resident -O verify-required -O application=ssh: 设置 > SSH 和 GPG 密钥。 +- 点击“添加 SSH 密钥”。 +- 粘贴您的公钥。 + +修改 `/path/to/.ssh/config` + +``` title="~/.ssh/config" +Host github.com +HostName ssh.github.com +User git +Port 443 +PreferredAuthentications publickey +IdentityFile "/path/to/.ssh/key" +``` + +测试能否正常连接: `ssh -T git@github.com` + **在新设备上使用常驻密钥**: 常驻密钥具有便携性,可以轻松取回私钥句柄和公钥文件。 @@ -147,7 +167,93 @@ ssh-keygen -K ### 使用 PicoKeys 与 SSH/FIDO2 进行 Git 提交签名 -https://zhuanlan.zhihu.com/p/691575345 +检查 OpenSSH 版本,建议为 OpenSSH 8.3 或以上。检查 Git 版本,建议为 Git 2.34 或以上。 + +``` bash +ssh -V + +git --version +``` + +**设置 Git 默认用户名与邮箱**: + +此处设置的邮箱必须与在 GitHub/GitLab/Gitea 中设置的一致。 + +``` bash +git config --global user.name "username" +git config --global user.email "your.email@example.com" +``` + +**生成 ed25519-sk 密钥**: + +``` bash +ssh-keygen -t ed25519-sk -O resident -O verify-required -O application=ssh:git-signing -O user= -C "Git Signing Key" +``` + +**为 Git 配置 SSH 签名**: + +将 Git 的 GPG 格式设置为 SSH: + +``` bash +git config --global gpg.format ssh +``` + +指定签名密钥(公钥): + +``` bash +git config --global user.signingkey /path/to/your/git-signing-key-public.pub +``` + +启用自动提交签名和自动标签签名: + +``` bash +git config --global commit.gpgSign true +git config --global tag.forceSignAnnotated true +``` + +**创建并配置 allowed_signers 文件**: + +`allowed_signers` 文件每行的格式为: `[email] namespaces="git" [git_signing_public_key_string]` + +例如: + +``` title="allowed_signers" +your.email@example.com namespaces="git" ssh-ed25519 AAAAC3NzaC1lZYourPublicKeyData... Git Signing Key +``` + +请确保 `your.email@example.com` 与在 `git config user.email` 设置的邮箱完全匹配。`namespaces="git"` 对于限定密钥权限范围至关重要。 + +在 Git 中设定 `allowed_signers` 文件的位置: + +``` bash +git config --global gpg.ssh.allowedSignersFile /path/to/your/.ssh/allowed_signers" +``` + +**本地验证签名情况**: + +- 针对提交: `git log --show-signature` +- 针对标签: `git tag -v ` +- 查看是否有 `Good "git" signature for your.email@example.com with ED25519-SK key ...` + +**在 GitHub 与 Gitea 上获取“已验证”标志**: + +GitHub: + +- 将您的签名密钥作为 SSH 密钥上传至 GitHub: 用于签名的 SSH 公钥必须以认证密钥的形式添加到 GitHub 账户的 SSH 和 GPG 密钥设置。 +- 前往 GitHub > 设置 > SSH 和 GPG 密钥。 +- 点击“添加 SSH 密钥”。 +- 粘贴您的签名公钥。 +- GitHub 会将此密钥生成的签名与您的账户关联,并在**提交者邮箱与 GitHub 账户已验证邮箱匹配**时,将提交标记为“已验证”。 + +Gitea: + +- 将您的签名密钥作为 SSH 密钥上传至 Gitea: 用于签名的 SSH 公钥必须以认证密钥的形式添加到 Gitea 账户的 SSH 和 GPG 密钥设置。 +- 前往 Gitea > 设置 > SSH 和 GPG 密钥。 +- 点击“添加 SSH 密钥”。 +- 粘贴您的签名公钥。 +- 点击“验证”按钮,[按照提示验证公钥](https://blog.cattom.site/tech/Snippets/#gitea)。 +- Gitea 会将此密钥生成的签名与您的账户关联,并在**提交者邮箱与 Gitea 账户已验证邮箱匹配**时,将提交标记为“已验证”。 + ## PicoKeys 指示灯 diff --git a/mkdocs.yml b/mkdocs.yml index 75e835d..0052fa0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -97,6 +97,7 @@ nav: - "小米 CR6608": tech/CR6608.md - "Mi 8 UD (equuleus)": tech/Mi8UD(equuleus).md - "Redmi 4X (santoni)": tech/Redmi4X(santoni).md + - "PicoKeys: YubiKey 的开源平替": tech/Picokeys.md - "手把手教你备份和还原 Docker 卷": tech/Backup-and-Restore-of-Docker-Volumes-A-Step-by-Step-Guide.md - "在 Ubuntu 24.04 上添加交换空间": tech/How-to-Add-Swap-Space-on-Ubuntu-2404.md - "安装和配置 Material for MkDocs": tech/Install-Material-for-MkDocs.md