gpg命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gpg命令相关的知识,希望对你有一定的参考价值。

gpg2 - OpenPGP encryption and signing tool

   GPG是加密和数字签名的免费工具,大多用于加密信息的传递。除了仅用密码加密外,GPG最大的不同是提供了“公钥/私钥”对。

     查看gpg帮助信息

[[email protected] ~]# gpg --help
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ?, ?, ELG, DSA                                                #支持的非对称加密算法
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,         #支持的加密算法
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224                 #支持的散列算法
Compression: Uncompressed, ZIP, ZLIB, BZIP2                                #支持的压缩算法
Syntax: gpg [options] [files]
Sign, check, encrypt or decrypt
Default operation depends on the input data
Commands:
 -s, --sign                 make a signature                                        #生成一份签名                         
     --clearsign            make a clear text signature                             #生成明文签名
 -b, --detach-sign          make a detached signature                               #生成分离的签名
 -e, --encrypt              encrypt data                                            #数据加密 
 -c, --symmetric            encryption only with symmetric cipher                   #使用对称加密
 -d, --decrypt              decrypt data (default)                                  #解密数据(默认)
     --verify               verify a signature                                      #验证签名
 -k, --list-keys            list keys                                               #列出签名
    --list-sigs            list keys and signatures                                 #列出秘钥和签名
     --check-sigs           list and check key signatures                           #列出并检查秘钥签名
     --fingerprint          list keys and fingerprints                              #列出秘钥和指纹
 -K, --list-secret-keys     list secret keys                                        #列出(secret)私钥
     --gen-key              generate a new key pair                                 #生成新的秘钥对
     --gen-revoke           generate a revocation certificate                        #生成一个吊销证书
     --delete-keys          remove keys from the public keyring                     #从公钥中删除
     --delete-secret-keys   remove keys from the secret keyring                     #从私钥中删除
     --sign-key             sign a key                                              #秘钥签名
     --lsign-key            sign a key locally                                      #
     --edit-key             sign or edit a key                                      #签名或编辑秘钥
     --passwd               change a passphrase                                     #更改密码口令
     --export               export keys                                             #输出秘钥
     --send-keys            export keys to a key server                              #输出密码到服务器
     --recv-keys            import keys from a key server                             #从服务器导入秘钥
     --search-keys          search for keys on a key server                          #  在秘钥服务器上搜索秘钥  
     --refresh-keys         update all keys from a keyserver                         #从秘钥服务器上同步所用秘钥
     --import               import/merge keys                                        #导入或者合并秘钥
     --card-status          print the card status                                    #打印card状态
     
     --card-edit            change data on a card                                    #更改card上数据
     --change-pin           change a card‘s PIN                                      #改变card PIN码
     --update-trustdb       update the trust database                                #更新信任数据库
     --print-md             print message digests                                    #打印信息摘要
     --server               run in server mode                                       #服务器上运行的模式
     Options:
     -a, --armor                create ascii armored output                              #创建ascii码封装的输出
     -r, --recipient USER-ID    encrypt for USER-ID                                      #为接受的用户id家吗
     -u, --local-user USER-ID   use USER-ID to sign or decrypt                           #使用用户id来解密
     -z N                       set compress level to N (0 disables)                     #压缩等级   
     --textmode             use canonical text mode                                  #使用标准文本模式
     -o, --output FILE          write output to FILE                                     #写输出到文件
     -v, --verbose              verbose                                                  #显示过程
     -n, --dry-run              do not make any changes                                  #不做改变
     -i, --interactive          prompt before overwriting                                #覆盖前询问
      --openpgp              use strict OpenPGP behavior                              #严格遵守OpenGPG
(See the man page for a complete listing of all commands and options)
Examples:
     -se -r Bob [file]          sign and encrypt for user Bob
         --clearsign [file]         make a clear text signature
         --detach-sign [file]       make a detached signature
         --list-keys [names]        show keys
         --fingerprint [names]      show fingerprints
    Please report bugs to <http://bugs.gnupg.org>.[object Object]

对称加密file文件

[[email protected] tmp]# gpg -c file
[[email protected] tmp]# ls -l file
file      file.gpg 
[[email protected] tmp]# ls -l file.gpg
-rw-r--r--. 1 root root 512 Jul 17 15:57 file.gpg

解密文件

[[email protected] tmp]# gpg -o file2 -d file.gpg ls
在hostA上生成公钥私钥对
                         gpg --gen-key
[[email protected] tmp]# gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 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)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 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) 4w
Key expires at Mon 14 Aug 2017 04:04:01 PM CST
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.

Real name: yemo
Name must be at least 5 characters long
Real name: memeda
Email address: [email protected]
Comment: no
You selected this USER-ID:
    "memeda (no) <[email protected]>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key C59856DA marked as ultimately trusted
public and secret key created and signed.
使用对称秘钥加密,每次使用秘钥需要输入密码
                     lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
                     x Enter passphrase                                    x
                     x                                                     x
                     x                                                     x
                     x Passphrase ________________________________________ x
                     x              
                     
                                       x
                     x       <OK>                             <Cancel>     x
                     mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj


在hostA主机上查看公钥

                    gpg --list-keys

[[email protected] tmp]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/C59856DA 2017-07-17 [expires: 2017-08-14]
uid                  memeda (no) <[email protected]>
sub   2048R/BA219184 2017-07-17 [expires: 2017-08-14]

在hostA主机上导出公钥到文件momoda.pubkey

                    gpg -a --export -o momoda.pubkey

[[email protected] tmp]# gpg -a --export -o momoda.pubkey
[[email protected] tmp]# ls -lh momoda.pubkey
-rw-r--r--. 1 root root 1.7K Jul 17 16:12 momoda.pubkey

hostA主机上复制公钥文件到需加密的B主机上

               scp wang.pubkey hostB:

[[email protected] tmp]# scp momoda.pubkey [email protected]:/root/
The authenticity of host ‘172.17.250.212 (172.17.250.212)‘ can‘t be established.
ECDSA key fingerprint is 3e:98:b5:4f:e2:44:f7:df:e5:51:7c:a3:24:52:04:d1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.17.250.212‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
Permission denied, please try again.
[email protected]‘s password:
momoda.pubkey                                                   100% 1731     1.7KB/s   00:00

hostB上 生成公私钥对

[[email protected] ~]# gpg --gen-key
[[email protected] ~]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/5C32ECD0 2017-07-17 [expires: 2017-08-14]
uid                  haimo
sub   2048R/23F36627 2017-07-17 [expires: 2017-08-14]

hostB导入A的公钥

[[email protected] ~]# gpg --import momoda.pubkey
gpg: key C59856DA: public key "memeda (no) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
[[email protected] ~]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/5C32ECD0 2017-07-17 [expires: 2017-08-14]
uid                  haimo
sub   2048R/23F36627 2017-07-17 [expires: 2017-08-14]
pub   2048R/C59856DA 2017-07-17 [expires: 2017-08-14]
uid                  memeda (no) <[email protected]>
sub   2048R/BA219184 2017-07-17 [expires: 2017-08-14]

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

[[email protected] ~]# gpg -e -r memeda file
gpg: BA219184: There is no assurance this key belongs to the named user
pub  2048R/BA219184 2017-07-17 memeda (no) <[email protected]>
 Primary key fingerprint: 7C32 1116 B70B 7762 A94D  F85A B7EC 75FF C598 56DA
      Subkey fingerprint: 5D77 4DA0 AF72 C988 EDE0  BC79 9F8E 3973 BA21 9184
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
[[email protected] ~]# ls
anaconda-ksost.cfg  file  file.gpg  initial-setup-ks.cfg  momoda.pubkey  original-ks.cfg  test

复制文件到hostA

[[email protected] ~]# scp file.gpg [email protected]:/tmp/
The authenticity of host ‘172.17.251.145 (172.17.251.145)‘ can‘t be established.
ECDSA key fingerprint is 0b:42:00:5d:5e:47:36:34:a4:37:a3:16:12:18:ec:94.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.17.251.145‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
file.gpg                                                        100%  659     0.6KB/s   00:00

在hostA中使用私钥解密文件

[[email protected] tmp]# gpg -d file.gpg
You need a passphrase to unlock the secret key for
user: "memeda (no) <[email protected]>"
2048-bit RSA key, ID BA219184, created 2017-07-17 (main key ID C59856DA)
gpg: encrypted with 2048-bit RSA key, ID BA219184, created 2017-07-17
      "memeda (no) <[email protected]>"
#
# /etc/fstab
# Created by anaconda on Sun May 14 05:22:45 2017
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=61f2ffd9-1745-4d97-bdc6-9d7fa4c8e9b2 /                       xfs     defaults        0 0
UUID=2c7fe7ac-7664-49f0-8f2b-03d23b52262b /boot                   xfs     defaults        0 0
UUID=2edbee5c-f153-492b-a837-4b72fafcc482 /usr                    xfs     defaults        0 0
UUID=968c4242-bfa8-49db-8d2b-a43c81013e5f swap                    swap    defaults        0 0

删除公钥和私钥

[[email protected] tmp]# gpg --delete-secret-keys memeda
[[email protected] tmp]# gpg --delete-keys memeda
[[email protected] tmp]# gpg --list-key
gpg: checking the trustdb
gpg: no ultimately trusted keys found


本文出自 “庭前夜末空看雪” 博客,请务必保留此出处http://12550795.blog.51cto.com/12540795/1950641

以上是关于gpg命令的主要内容,如果未能解决你的问题,请参考以下文章

禁止 GPG 命令中的密码提示

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

GPG加密windows中使用

VSCode自定义代码片段15——git命令操作一个完整流程