2019 年更新:

2019 年更新:

LUKS当您的计算机中有一个加密驱动器时,NautilusNemo会显示Devices为一个带有小锁的驱动器。

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

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

如果您访问Passwords And Keys,就会看到一堆匿名密钥。在它们的属性中,您可以找到类似 的描述,gvfs-luks-uuid=xxxxxxxxxxxx以及该 LUKS 驱动器的密码。这就是 Ubuntu 使用的。

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

答案1

您可以使用秘密工具从密钥环存储和检索密码。

要存储新密码:

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

我让你检查密钥环中它是如何显示的。要查找它(此命令可以轻松插入到你的脚本中):

secret-tool lookup drive mydrive

答案2

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

  1. 你需要手动赋予你的钥匙名称(Seahorse:说明) 因为其他应用程序使用的识别详细信息在 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

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

至于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 命令,请告诉我们。

2019 年更新:

#!/usr/bin/env python

import keyring
from vsgui import api

keyring = 'login'
keyname = 'key you are looking for'

# Get key
key = keyring.get_password(keyring, keyname)

# Store key
while not key:
    key = api.ask_passwd(keyname)
    if key:
        keyring.set_password('login', keyname, key)

答案3

使用Python 钥匙圈库

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

安装

pip install keyring

设置和获取密钥

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

答案4

这是精制我读完这里后得到的答案是,那里和测试lssecret

$ secret-tool lookup xdg:schema org.gnome.GVfs.Luks.Password gvfs-luks-uuid {uuid}
asupersecretpassword

这将为你获取具有给定 UUID 的设备的 LUKS 密码。使用 libsecret v0.21.1。

相关内容