我读过这篇文章很好地解释了如何在osx上设置pgp,但我打算使用生成的密钥来签署git提交,所以我想我需要将密钥传输到我的其他计算机.它是否正确?如果是这样,我该如何转移钥匙?
我将gpg密钥导入到我的macbook pro上时遇到问题.这是输出:
pg: conversion from `utf-8' to `US-ASCII' failed: Illegal byte sequence
gpg: key 5AE36741: public key "Micha\xc5\x82 Adamczyk <michal.anks@gmail.com>" imported
Run Code Online (Sandbox Code Playgroud)
导入该密钥后,即enigmail无法使用该密钥.关于如何解决这个问题的任何想法?
我正在自动化我的Docker安装.像这样的东西:
if apt-key fingerprint 0EBFCD88 | grep "Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" > /dev/null
then
# proceed
fi
Run Code Online (Sandbox Code Playgroud)
这在旧版本中运行良好apt-key,但最近的版本有两个问题:
一个警告:
Warning: apt-key output should not be parsed (stdout is not a terminal)
Run Code Online (Sandbox Code Playgroud)显然,我也可以解决这个问题,只需重定向stderr即可/dev/null.这让我很好奇:
这些好人如何建议我验证我的关键指纹?或者我想通过自动化来解决这个根本错误,这是否会破坏这一点?(我想不是,因为我仍然手动从网站上取消了预期的指纹,但随时可以告诉我......)
我创建了一个很好的长密码,使用了几次,然后忘了它;)扭曲是,我知道一般主题,可能几乎所有的角色.我内心的完美主义者不想撤销关键或类似的东西(我想我无论如何都需要密码取消它,对吧?).我觉得我应该能够通过粗暴的方式很好地解决这个问题 - 强迫可能的布局/字符我错了/错误输入.我写了一个C程序来生成这样的组合.不幸的是,我没有代码可以提供(我现在将使用"它不相关"的借口;).我还在网上看到了一些使用GPGME的代码来做这个概念验证.它有评论"这可以轻松快100倍".问题是,分析代码显示了作为GPGME调用本身的瓶颈.这是预期的,还是GPGME的限制可以使用完整的库或专用实现来解决?
你会怎么做呢?显然,这种方法是不可行的任何像样的未知密码,但我认为最关键的是,我知道什么我输入不知道确切的格式怎么我输入了-应该是可行的,不是吗?
根据这个链接,我只需要-S使用我的GPG密钥包含交换机来签署我的提交,但我不知道如何在Android Studio中使用它.
如何在Android Studio中签署我的提交?
编辑:我很欣赏OSX解决方案的出现,但我真的希望看到一个适用于Windows的答案.我只使用我的Mac作为文档和东西.
目前,我使用 2 个电子邮件(个人 + 公司)和一个 SSH 密钥登录 GitHub。但我使用相同的 GPG 密钥进行签名。两者都在我的 GitHub 电子邮件设置页面上进行了验证。
\n在第一个(个人)上,没有问题,当我进行提交时,它显示为Verified。在第二个(公司)上,提交在 GitHub 中显示为“未验证”,并显示以下警告消息:
\n\n\n此签名中的电子邮件与提交者电子邮件不匹配\xe2\x80\x99。
\n
$ gpg --list-secret-keys --keyid-format LONG\n\n...\nsec rsa4096/MY_GPG_KEY_ID 2020-05-19 [SC] [expires: 2022-05-19]\n...\nuid [ultimate] Furkan (Company key) <second_email@test.com>\nuid [ultimate] Furkan <first_email@test.com>\nRun Code Online (Sandbox Code Playgroud)\n在存储库中:
\n$ git log --show-signature\n\n...\ngpg: Good signature from "Furkan (Company key) <second_email@test.com>" [ultimate]\ngpg: aka "Furkan <first_email@test.com>" [ultimate]\nAuthor: MyGitHubNickname <second_email@test.com>\n...\nRun Code Online (Sandbox Code Playgroud)\n本地配置设置:
\n$ git config --local --list\n\n...\nuser.name=Furkan\nuser.email=second_email@test.com\nRun Code Online (Sandbox Code Playgroud)\n全局配置设置:
\n$ git config --global --list\n\n...\nuser.name=MyGitHubNickname\nuser.email=second_email@test.com\nuser.signingkey=MY_40_CHARACTER_SIGNING_KEY\n …Run Code Online (Sandbox Code Playgroud) 
使用Mac OS X Yosemite(10.10),我无法在SourceTree中激活GnuPG签名提交,因为复选框已禁用.如何启用提交签名?
按照官方 VPN 页面上的说明(说明安装 openvpn 客户端)进行第二步:
# curl -fsSL https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/openvpn-repo-pkg-keyring.gpg
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
sudo curl -fsSL https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/openvpn-repo-pkg-keyring.gpg
-bash: /etc/apt/trusted.gpg.d/openvpn-repo-pkg-keyring.gpg: Permission denied
(23) Failed writing body
Run Code Online (Sandbox Code Playgroud) 多年来我积累了几把钥匙.当我生成它们时,当我向它们添加各种uid时,我没有明智地使用"注释"功能.
此时我想纠正这个问题并更新每个uid上的注释字段 - 但不会丢失它们累积的签名.没有eddress更改,没有名称更改,只有uids上的注释.
可以这样做而不必为每个人提供/ {del,rev} uid并丢失签名吗?
我从brew安装了GPG.
brew install gpg
Run Code Online (Sandbox Code Playgroud)
这是gnupg2-2.0.30_2.
当我提交时,我收到一条错误消息:
You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <mm@test.de>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
我使用了命令:
gpg --list-secret-keys | grep ^sec
Run Code Online (Sandbox Code Playgroud)
它让我回来:
sec 2048R/1111AAAA 2017-01-05
Run Code Online (Sandbox Code Playgroud)
然后我用这个命令:
git config --global user.signingkey 1111AAAA
Run Code Online (Sandbox Code Playgroud)
commit给了我相同的错误消息.
我怎么解决这个问题?