4个版本
0.0.4 | 2022年12月3日 |
---|---|
0.0.3 | 2022年11月13日 |
0.0.2 | 2022年11月13日 |
0.0.1 | 2022年11月13日 |
#2145 in 开发工具
22KB
261 行
gfh
Git FIDO辅助工具,或者上帝保佑我。
gfh是一个帮助您使用存储在多个FIDO设备上的SSH密钥在Git中签名的工具。
注意:目前此项目仅与YubiKey 5C NFC进行了测试。任何FIDO2认证设备都应该是兼容的,但如果您在使用特定设备时遇到任何问题,或者它运行良好,请告诉我,这样我可以有一个所有已验证工作密钥的运行列表。
入门
在开始使用gfh之前,您需要确保您已经在FIDO密钥(们)上有一个驻留SSH密钥。最简单的方法是使用ssh-keygen -t ed25519-sk -O resident
,但如果您需要不同的东西,网上有更好的指南。
如果您没有多个FIDO密钥/只使用一个驻留SSH密钥,那么您很可能不需要使用gfh。由于Git不支持多个signingkey
,这个工具的使用场景非常有限。如果您只使用一个驻留SSH密钥进行签名,您可以直接使用该配置选项,无需gfh。
注意事项
我只亲自验证了gfh在macOS上可以工作,我的有些朋友在Windows(10 & 11)上运行良好,但我自己没有成功。...
在Linux上,gfh似乎会因warning: gpg.ssh.defaultKeyCommand succeeded but returned no keys: key::...
而失败,这显然是没有意义的,因为它期望的格式显然是存在的。我的一个朋友说,运行eval `ssh-agent`
(或者Fish的等价物eval (ssh-agent -c)
)解决了他们的问题,但我自己没有成功,所以YMMV。
如果您发现这些问题的有效解决方案,请告诉我,我会尝试看看是否能重现这些问题。
使用方法
将您的密钥添加到gfh的最简单方法是使用gfh -a
。这将提示您选择要使用的FIDO密钥,以及与其一起使用的公钥(或私钥)的路径(这必须是您为该特定FIDO设备生成的本地密钥)。
如果您愿意,可以手动编辑配置,通过在~/.config/gfh/keys
创建文件以以下格式
serial::~/.ssh/id_ed25519_sk
serial::~/.ssh/id_ecdsa_sk
(空行和以#
开头的行将被忽略,但使用gfh -a
时不会被保留)
将密钥导入gfh后,运行以下命令以设置与Git的SSH签名
git config --global commit.gpgsign true
git config --global tag.gpgsign true
git config --global gpg.format "ssh"
git config --global gpg.ssh.program "gfh-keygen"
git config --global gpg.ssh.defaultKeyCommand "gfh"
如果您使用的是Windows,将最后两个命令更改为设置gfh-keygen.exe
和gfh.exe
。
(您不需要设置user.signingkey
,因为gfh会自动为您处理。)
如果一切顺利,您应该能够在插入FIDO密钥的情况下创建新的提交或标签,Git将正确提示您使用它进行签名。
安装
当前发布版本正在等待固定的CI构建,同时您可以通过Cargo正常安装。
gfh的静态二进制构建可在我们的发布页面上获取,适用于Windows(x86)、Mac(ARM & x86)和Linux(各种架构)。
Homebrew
brewinstall ovyerus/tap/gfh
Scoop
scoop bucket add ovyerus https://github.com/Ovyerus/bucket
scoop install gfh
Crate
cargoinstall gfh
从源代码
拉取此存储库并运行cargo build --release
,然后在./target/release/
中查找gfh
和gfh-keygen
二进制文件。
从源代码或从Cargo构建时,在Linux上您还需要以下软件包:pkg-config libpcsclite-dev libudev-dev
许可证
此程序受MIT许可证的许可(请参阅LICENSE或https://opensource.org/licenses/MIT)。
依赖关系
~21–34MB
~563K SLoC