如何从终端中的密钥环获取密码以便在脚本中使用?

当您的计算机中有LUKS加密驱动器时, NautilusNemo会在“ Devices下将其显示为带有一点锁定的驱动器。

单击它时,需要输入密码。 如果您选择remember this password forever ,则会将其保存到您的密钥环中。 下次启动,单击驱动器将立即安装它。

如何从终端“立即安装”密码环中存储密码的驱动器? 我希望有一个自动启动脚本,当我登录时将挂载我的LUKS驱动器。我不想在脚本中存储我的密码,我想使用密钥环中的密码:

如果你去Passwords And Keys ,有一堆无名密钥。 在他们的属性中,您可以找到类似gvfs-luks-uuid=xxxxxxxxxxxx以及该LUKS驱动器的密码。 这就是Ubuntu使用的。

我想到的一个选项是python-gnomekeyring但它只能获取密钥和密码。 我需要GUI调用“技术细节”来获取特定uuid的密码,因为keyname始终为空。

您可以使用secret-tools来存储和检索密钥环中的密码。

要存储新密码:

 secret-tool store --label='Password for mydrive' drive mydrive 

我让你检查钥匙圈它是如何出现的。 要查找它(可以在脚本中轻松插入此命令):

 secret-tool lookup drive mydrive 

我认为唯一的答案是通过python ,但有两个错误使事情变得困难。

  1. 您需要手动提供密钥名称 (Seahorse:Descriptions),因为在python版本中无法识别其他应用程序使用的详细信息。 我在这里创建了一个错误报告: https : //bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. 在LUKS键的特定情况下,这些描述在Seahorse中是空的,但更改空描述确实会更改键名,因此您可以在python中查找它。 我在这里创建了一个错误报告: https : //bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

如果您正在使用脚本和密钥环,请提及这些错误也会影响您。

  • 错误1144781也影响了我
  • 错误1144703也影响了我

至于python部分,这是一个例子:

 #!/usr/bin/env python import gnomekeyring as gk keyring = 'login' keyItems = gk.list_item_ids_sync(keyring) for keyItem in keyItems: key = gk.item_get_info_sync(keyring, keyItem) if key.get_display_name() == 'KeyName you are looking for': # Your script here using key.get_secret() print "Password:", key.get_secret() 

如果您知道其他任何方式,例如通过简单的bash命令,请告诉我们。

使用Python Keyring Lib

它有一个方便的CLI用于shell脚本。

安装

 pip install keyring 

设置和获取密钥

 $ keyring set system username Password for 'username' in 'system': $ keyring get system username password