禁止 GPG 命令中的密码提示
Suppress the passphrase prompt in GPG command
编辑后的版本
我有一个关于 GPG 的问题,但是我写了所有的过程,也许它会对某人有所帮助。
我想:在 GPG 命令中抑制密码提示。我不想:使用 -c 选项(--symmetric)。
我有 2 个系统 Linux 和 Windows。我想将数据从 Linux 发送到 Windows。我想在 Linux 中加密数据并在 Windows 中解密。
myFileOnLinux.txt
是 Linux 上我要加密的文件。
my@Email.com
配对密钥的 UID。
myPasswordPhrase
是密码短语。
我在两者上都安装了 GPG 并执行了以下步骤:
在Windows
中生成一对密钥:
gpg --gen-key
更改Windows
中的关键参数:
gpg --edit-key my@Email.com
trust
5
expire
0
导出 public 个键:
gpg -a --export my@Email.com > public.key
将public密钥发送到Linux机器。
在 Linux 中导入 public 密钥。
gpg --import public.key
更改Linux
中的信任参数
gpg --edit-key my@Email.com
trust
5
加密文件 Linux
gpg --output output.enc --encrypt --recipient my@Email.com myFileOnLinux.txt
发送加密文件到Windows.
解密文件。
gpg --batch --passphrase "myPasswordPhrase" -d -o test.dec output.enc
在 Windows 中弹出 window 它再次询问我 Passphrase
。我怎样才能避免它?
经过大量挖掘,我发现这个命令禁用了 windows 上的输入提示(也适用于 *nix 系统):
--pinentry-mode=loopback
完整的命令是:
gpg --pinentry-mode=loopback --passphrase "PASSWORD" -d -o "PATH\TO\OUTPUT" "PATH\TO\FILE.gpg"
gpg --batch --import sec.key
gpg -d --batch --passphrase mypassphrase encrypted_file.gpg
--batch 标志在导入密钥和解密文件时抑制密码提示。
如果你想使用对称密钥(-c 选项)那么你只需要添加 --quiet
和 --batch
标志。
这是一个完整的工作示例:
gpg --symmetric --cipher-algo AES256 --passphrase mySuperCoolPassphrase --quiet file_to_encrypt.tftpl
github 也有一个工作示例,他们用它来在自动化中解密文件
https://docs.github.com/en/actions/security-guides/encrypted-secrets#limits-for-secrets
UPDATE
gpg 解密存在一个问题,这让我在生产中使用它时三思而后行。 (基本上它会无限期地挂起,除非你手动修改它)所以我决定使用 https://github.com/FiloSottile/age,因为它使用简单,评价很高,而且看起来非常可靠
编辑后的版本
我有一个关于 GPG 的问题,但是我写了所有的过程,也许它会对某人有所帮助。
我想:在 GPG 命令中抑制密码提示。我不想:使用 -c 选项(--symmetric)。
我有 2 个系统 Linux 和 Windows。我想将数据从 Linux 发送到 Windows。我想在 Linux 中加密数据并在 Windows 中解密。
myFileOnLinux.txt
是 Linux 上我要加密的文件。my@Email.com
配对密钥的 UID。myPasswordPhrase
是密码短语。
我在两者上都安装了 GPG 并执行了以下步骤:
在
Windows
中生成一对密钥:gpg --gen-key
更改
Windows
中的关键参数:gpg --edit-key my@Email.com
trust 5 expire 0
导出 public 个键:
gpg -a --export my@Email.com > public.key
将public密钥发送到Linux机器。
在 Linux 中导入 public 密钥。
gpg --import public.key
更改Linux
中的信任参数gpg --edit-key my@Email.com
trust 5
加密文件 Linux
gpg --output output.enc --encrypt --recipient my@Email.com myFileOnLinux.txt
发送加密文件到Windows.
解密文件。
gpg --batch --passphrase "myPasswordPhrase" -d -o test.dec output.enc
在 Windows 中弹出 window 它再次询问我 Passphrase
。我怎样才能避免它?
经过大量挖掘,我发现这个命令禁用了 windows 上的输入提示(也适用于 *nix 系统):
--pinentry-mode=loopback
完整的命令是:
gpg --pinentry-mode=loopback --passphrase "PASSWORD" -d -o "PATH\TO\OUTPUT" "PATH\TO\FILE.gpg"
gpg --batch --import sec.key
gpg -d --batch --passphrase mypassphrase encrypted_file.gpg
--batch 标志在导入密钥和解密文件时抑制密码提示。
如果你想使用对称密钥(-c 选项)那么你只需要添加 --quiet
和 --batch
标志。
这是一个完整的工作示例:
gpg --symmetric --cipher-algo AES256 --passphrase mySuperCoolPassphrase --quiet file_to_encrypt.tftpl
github 也有一个工作示例,他们用它来在自动化中解密文件 https://docs.github.com/en/actions/security-guides/encrypted-secrets#limits-for-secrets
UPDATE
gpg 解密存在一个问题,这让我在生产中使用它时三思而后行。 (基本上它会无限期地挂起,除非你手动修改它)所以我决定使用 https://github.com/FiloSottile/age,因为它使用简单,评价很高,而且看起来非常可靠