Key的管理

Singularity 3.2开始提供命令支持导入,导出和删除PGP keys GnuPGP (GPG)。 这些命令只会修改本地的key而不会修改cloud keystore上的key。

导入key

Singularity 3.2导入key的命令可以支持导入binary格式的和armored格式的key,命令会自动判断key的格式。 导入key的命令可以导入私有key和公有key到本地的keystore。

下面我们先看下怎么导入一个私有的key到本地的keystore。

首先查看下本地keystore已经存在的私有key。

$ singularity key list --secret

Note

--secret 或者 -s 标记将只会返回本地keystore下的私有key

输出如下:

Private key listing (/home/joana/.singularity/sypgp/pgp-secret):

0) U: Johnny Cash (none) <cash@sylabs.io>
C: 2019-04-11 22:22:28 +0200 CEST
F: 47282BDC661F58FA4BEBEF47CA576CBD8EF1A2B4
L: 3072
--------
1) U: John Green (none) <john@sylabs.io>
C: 2019-04-11 13:08:45 +0200 CEST
F: 5720799FE7B048CF36FAB8445EE1E2BD7B6342C5
L: 1024
--------

Note

当你使用sudo运行同样的命令,你会看到不同的结果,因为使用sudo运行命令的时候返回的是 root 用户的keystore下的私有key。

接下来,你可以从一个key文件中导入key到本地的keystore。 比如本地有一个私有的gpg key文件 pinkie-pie.asc ,你要导入这个文件:

$ singularity key import $HOME/pinkie-pie.asc

Note

这里例子中假定key文件在 $HOME 目录下。

因为你到导入一个私有key,你需要给这个私有key指定一个密码。

Enter your old password :
Enter a new password for this key :
Retype your passphrase :
Key with fingerprint 8C10B902F438E4D504C3ACF689FCFFAED5F34A77 successfully added to the keyring

然后使用 singularity key list -s 命令你就你能看我们的key已经成功的加入到本地的keystore了。

Private key listing (/home/joana/.singularity/sypgp/pgp-secret):

  0) U: Johnny Cash (none) <cash@sylabs.io>
  C: 2019-04-11 22:22:28 +0200 CEST
  F: 47282BDC661F58FA4BEBEF47CA576CBD8EF1A2B4
  L: 3072
  --------
  1) U: John Green (none) <john@sylabs.io>
  C: 2019-04-11 13:08:45 +0200 CEST
  F: 5720799FE7B048CF36FAB8445EE1E2BD7B6342C5
  L: 1024
  --------
  3) U: Pinkie Pie (Eternal chaos comes with chocolate rain!) <balloons@sylabs.io>
  C: 2019-04-26 12:07:07 +0200 CEST
  F: 8C10B902F438E4D504C3ACF689FCFFAED5F34A77
  L: 1024
  --------

Note

如果你要导入一个公共的key,使用相同的命令,import 命令会自动检测要导入的key是公共key还是私有key。

导出key

导出key的命令可以到处本地keystore的key到一个文件。 命令可以导出公共key和私有key。命令即可以将key导出成armored格式也可以导出成binary格式。

导出一个公共key为一个binary格式的文件:

$ singularity key export 8C10B902F438E4D504C3ACF689FCFFAED5F34A77 $HOME/mykey.asc

这个命令将导出的公共key命名为 mykey.asc,导出key的格式是binary,如果你想将这个公共key导出为armor格式,需要加上 --armor 标记:

$ singularity key export --armor 8C10B902F438E4D504C3ACF689FCFFAED5F34A77 $HOME/mykey.asc

下面是导出一个私有key为armor格式。

$ singularity key export --armor --secret 8C10B902F438E4D504C3ACF689FCFFAED5F34A77 $HOME/mykey.asc

导出成binary格式。

$ singularity key export --secret 8C10B902F438E4D504C3ACF689FCFFAED5F34A77 $HOME/mykey.asc

Note

导出key并不能会改变本地keystore里面各种key的状态。导出只是从keystore获取内容保存到本机文件。

删除key

如果你要从本地keystore里面删除一个公共key:

$ singularity key remove 8C10B902F438E4D504C3ACF689FCFFAED5F34A77

Note

这个命令只会删除这个fingerprint的公共key而不会删除私有key。