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。