我想使用pass
凭证存储进行 DockerHub 登录。因此,主要关注这个链接
- 我安装了
pass
(apt install pass
) - 我安装了,但按照如何在此其他链接中设置凭据存储
docker-credential-pass
下的说明 4 到 7 - 我修改了
~/.docker/config.json
添加键值对的文件"credsStore": "pass"
- 因为我有一个 GPG ID,我可以通过指令
gpg --list-secret-keys
或也可以看到(在我看到gpg -K
的旁边的行中),并且我经常使用它来加密和解密一些文件,再次遵循第二个链接或第 2 点在这一项中,我做到了。我得到了uid
[ultimate] MY_NAME <MY_EMAIL>
pass init MY_EMAIL
mkdir: created directory '/home/user/.password-store/'
Password store initialized for MY_EMAIL
所以,似乎一切都顺利到这里,但是,当我尝试docker login
或者pass insert docker-credential-helpers/docker-pass-initialized-check
我得到
gpg: error retrieving 'MY_EMAIL' via WKD: No data
gpg: MY_EMAIL: skipped: No data
gpg: [stdin]: encryption failed: No data
Password encryption aborted.
但是,正如我之前所说,我经常使用gpg --output out_file.gpg --encrypt --recipient MY_EMAIL input_file
没有任何问题。
此外,gpg: error retrieving '[email protected]' via WKD中的解决方案似乎不适合我的问题,因为当我使用gpg
上面提到的命令查找密钥时,我可以看到expires: 2023-07-20]
.
那么,这是现在的问题,我该怎么办?我在 Debian 11 上工作。
也许这个问题与https://github.com/docker/docker-credential-helpers下的下一个声明有关:
`pass` needs to be configured for `docker-credential-pass` to work properly. It must be initialized with a `gpg2` key ID. Make sure your GPG key exists is in `gpg2` keyring as `pass` uses `gpg2` instead of the regular `gpg`.
如果这是问题,我该怎么办?
我也尝试过这样做,pass init ID
而不是从和 linepass init MY_EMAIL
获取 ID ,遇到诸如here之类的问题,但那里给出的解决方案也不起作用。gpg2 --list-secret-keys --keyid-format=long
sec rsa3072/ID date ...
提前致谢!
解决了!
问题是“我的”旧 GPG ID 属于我的
root
用户,所以我需要用我的非 root 用户生成一个密钥user