yuenshome / yuenshome.github.io

https://yuenshome.github.io
MIT License
81 stars 15 forks source link

Gpg命令的常用操作 #144

Open ysh329 opened 5 months ago

ysh329 commented 5 months ago

https://infra.apache.org/release-signing.html

ysh329 commented 5 months ago

创建新的gpg key

# gpg --full-generate-key
gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name:
Email address:
Comment: CODE SIGNING KEY
You selected this USER-ID:

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

导出 GPG 公钥

要使用 GPG 导出一个公钥,你需要知道该公钥的密钥ID。你可以使用 gpg --list-keys 命令来查看所有的公钥和它们的密钥ID。

一旦你知道了密钥ID,你就可以使用 gpg --export --armor <key-id> 命令来导出公钥。这个命令会将公钥导出为 ASCII 格式,你可以将它保存到一个文件中,或者直接复制到剪贴板。

这是相应的命令:

gpg --list-keys # 列出所有的公钥和它们的密钥ID
gpg --export --armor <key-id> # 导出公钥

请将 <key-id> 替换为你的密钥ID。

压缩目录~/.gnupg/并转存

要使用 tar 命令压缩一个目录,你可以使用以下命令:

tar -czvf name-of-archive.tar.gz /path/to/directory/

在这个命令中:

/path/to/directory/ 是你想要压缩的目录的路径。你需要将它替换为实际的路径。

name-of-archive.tar.gz 是你想要创建的归档文件的名称。你需要将它替换为实际的名称。

zip -r dot.gnugp.zip ~/.gnupg/
tar -czvf dot.gnu.tar.gz ~/.gnupg/
cp dot.gnu* /mnt/c/Users/Administrator/Desktop/

上传密钥到公钥服务器

上传密钥到公钥服务器的主要目的是让其他人能够找到和验证你的公钥。当你发送一个加密的消息或者签名一个文件时,接收者需要你的公钥来解密消息或者验证签名。如果他们可以从一个公钥服务器下载你的公钥,那么这个过程就会变得更加容易。

要上传一个公钥到公钥服务器,你可以使用 gpg --send-keys 命令,如下所示:

gpg --keyserver hkp://keyserver.ubuntu.com --send-keys YOUR_KEY_ID

请将 YOUR_KEY_ID 替换为你的公钥ID。 关于你的另一个问题,GPG 密钥是基于大数质因数分解或者离散对数问题的,这意味着即使有人试图生成和你一样的密钥,他们也需要花费极大的计算资源和时间。因此,你不需要担心其他人生成和你一样的密钥。上传密钥到公钥服务器的主要目的是为了方便其他人找到你的公钥,而不是防止密钥冲突。

ysh329 commented 5 months ago

如何删除本地生产的gpg key

要删除本地生成的 GPG 密钥,你可以按照以下步骤操作:

  1. 首先,使用 gpg --list-keys 命令列出所有的 GPG 密钥。这将显示所有的公钥。

  2. 找到你想要删除的密钥的密钥ID。密钥ID通常是密钥信息中的最后8个字符。

  3. 使用 gpg --delete-secret-keys <key-id> 命令删除私钥。

  4. 使用 gpg --delete-keys <key-id> 命令删除公钥。

这是相应的命令:

gpg --list-keys # 列出所有的 GPG 密钥
gpg --delete-secret-keys <key-id> # 删除私钥
gpg --delete-keys <key-id> # 删除公钥

请将 <key-id> 替换为你的密钥ID。注意,删除密钥是不可逆的操作,所以在删除之前请确保你已经保存了所有需要的信息。

修改现有gpg key增加comment

要修改现有的 GPG 密钥以添加注释,你需要执行以下步骤:

  1. 打开终端并输入 gpg --edit-key YOUR_KEY_ID,将 YOUR_KEY_ID 替换为你要修改的密钥的 ID。
  2. 在 GPG 命令提示符下,输入 adduid 来添加一个新的用户 ID。这将启动一个提示序列,让你输入新的名称、电子邮件和注释。
  3. 注释字段中输入你想要添加的注释。
  4. 当提示你确认新的用户 ID 时,输入 O(表示 OK)。
  5. 输入 save 来保存你的更改并退出。

这是相应的命令:

gpg --edit-key YOUR_KEY_ID
adduid
# Follow the prompts to add a new user ID with the comment
save

请注意,这将添加一个新的用户 ID,而不是修改现有的用户 ID。GPG 不允许修改现有的用户 ID,但你可以添加多个用户 ID 到同一个密钥。每个用户 ID 都可以有自己的名称、电子邮件和注释。

ysh329 commented 5 months ago

release signing key

下面这段命令来自tvm项目根目录的KEYS文件部分的截取,是关于产生gpg key到某个文件中的,仔细看是存在问题

Examples of importing this file in your keystore:
 gpg --import KEYS.txt
 (need pgp and other examples here)

Examples of adding your key to this file:
 pgp -kxa <your name> and append it to this file.
 (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
 (gpg --list-sigs <your name>
     && gpg --armor --export <your name>) >> this file.

这段命令中存在一些问题。首先,this file应该被替换为你想要操作的具体文件名。其次,pgp -kxa <your name>这个命令可能不会工作,因为pgp已经被gpg替代了。以下是修正后的命令:

导入密钥到你的密钥库的示例:

gpg --import KEYS.txt

将你的密钥添加到这个文件的示例:

gpg --list-sigs "<your name>" && gpg --armor --export "<your name>" >> KEYS.txt

请将<your name>替换为你的实际名字,将KEYS.txt替换为你想要操作的文件名。


对不起,我可能误解了你的问题。你的问题是关于gpg --armor --export "<your name>"这个命令没有将输出追加到文件,而是输出到了屏幕。

这可能是因为你的shell没有正确地处理重定向操作。在bash和其他一些shell中,你可以使用>>操作符将输出追加到文件。如果这个操作没有按照预期工作,那可能是因为你的shell不支持这个操作,或者你的命令有误。

以下是修正后的命令:

(gpg --list-sigs "<your name>" && gpg --armor --export "<your name>") >> KEYS.txt

这个命令将gpg --list-sigs "<your name>"gpg --armor --export "<your name>"的输出都追加到KEYS.txt文件。请注意,你需要将<your name>替换为你的实际名字,将KEYS.txt替换为你想要操作的文件名。