unix pass - 使用 PASSWORD_STORE_GPG_OPTS 传递密码

unix pass - 使用 PASSWORD_STORE_GPG_OPTS 传递密码

以下是通行证的信息:https://www.passwordstore.org

我的关键点是,我想在命令行传递密码密钥。然而,我能找到的与这个问题相关的主题和解决方案不适用于我的情况。

当我检查Pass的代码时,我发现了一个名为PASSWORD_STORE_GPG_OPTS的参数。据我所知,应该可以用它来通过--pinentry-mode=loopback --passphrase "<此处密码>"到由Pass执行的gpg。执行它的代码片段在这里:

#Line 9
GPG_OPTS=( $PASSWORD_STORE_GPG_OPTS "--quiet" "--yes" "--compress-algo=none" "--no-encrypt-to" )

#(...)

#Line 387

pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | $BASE64)" || exit $?

但是,由于某种原因,这不起作用。

那么问题来了,是否可以使用这个参数将passphrase传递给gpg并在没有提示的情况下使用pass呢?如果没有,那么还有其他方法吗?

编辑:正如@他们建议的,这里是我正在做的事情的信息:

设置变量:

 export PASSWORD_STORE_GPG_OPTS="--pinentry-mode=loopback --passphrase '<password_goes_here>'"

备注:密码仅包含大小写字母和数字 - 没有空格或其他字符。

然后,执行以下命令:

pass address/to/some/password

结果是:

gpg: decryption failed: No secret key

答案1

就我而言,正如@他们所建议的,问题是使用(出于未知原因......)引号。没有他们,一切都像魅力一样运转。

答案2

作为从字符串中读取密码的替代方法,如上所述,还可以通过某个文件处理密码:

export PASSWORD_STORE_GPG_OPTS="--pinentry=loopback --passphrase-file /path/to/.passphrase"

使用散列密码似乎不可能(例如,使用mkpasswd -m sha-512 passphrase > /path/to/.passphrase-hashed),因此需要以纯文本形式给出。

相关内容