如何从命令行列出和访问存储在 Ubuntu 密钥环中的机密?



我在帮助中看到了

keyring -h
usage: keyring [-h] [-p KEYRING_PATH] [-b KEYRING_BACKEND] [--list-backends] [--disable]
[operation] [service] [username]
positional arguments:
operation             get|set|del
service
username
optional arguments:
-h, --help            show this help message and exit
-p KEYRING_PATH, --keyring-path KEYRING_PATH
Path to the keyring backend
-b KEYRING_BACKEND, --keyring-backend KEYRING_BACKEND
Name of the keyring backend
--list-backends       List keyring backends and exit
--disable             Disable keyring and exit

然而,如果不记得很久以前我在那里存储的东西,我就不知道如何列出存储在那里的秘密。什么是正确的命令行?

keyring命令行工具不支持。

这个线程(链接)讨论了一个特性请求,但尚未实现。

keyring工具本身并不是一个keychain服务,而是其他keychain服务的包装器,称为后端。

它可以在各种钥匙链服务中获取和设置秘密,包括:KWallet, SecretService, Windows Credential Locker等。这些被称为后端。

使用底层keychain服务获取列表

在我的情况下,在Ubuntu 22.04上,底层默认的钥匙链工具是SecretService。我可以用下面的Python代码得到一个列表。

import secretstorage
conn = secretstorage.dbus_init()
collection = secretstorage.get_default_collection(conn)
for item in collection.get_all_items():
print('='*30)
print('label:', item.get_label())
print('attributes:')
for k,v in item.get_attributes().items():
print('t%-12s: %s' % (k,v))
print('secret:',item.get_secret())

底层Python库部分支持此

keyring命令行工具只是Python库https://github.com/jaraco/keyring的命令行部分。

使用一些Python知识,您可以使用keyring来获取这样的列表。

for item in keyring.get_keyring().get_preferred_collection().get_all_items():
print(item.get_label(), item.get_attributes())
然而,我怀疑它只列出了一个后端(默认的/首选的)的秘密,在我的例子中是SecretService。我假设大多数人只使用一个钥匙链服务,但也可能有不止一个。

在我的情况下,我使用Python Keyring实用程序https://github.com/jaraco/keyring

由下面的输出指示的上述文件包含您存储在那里的密钥/值,加密

python -c "import keyring.util.platform_; print(keyring.util.platform_.data_root())"

最新更新