Как получить пароли из брелка в терминале для использования в скриптах?

17

Если на вашем компьютере есть зашифрованный файл LUKS , Nautilus или Nemo покажет его в Devices как диск с небольшой блокировкой на нем.

Когда вы нажимаете на нее, вам нужно ввести пароль. Если вы выберете remember this password forever , он будет сохранен в вашем ключевом ключе. Следующая загрузка, щелкнув на диске, сразу установит его.

Как мне «сразу установить» такой диск, для которого кодовая фраза хранится в брелоке, от терминала? Я хочу иметь сценарий автозапуска, который будет монтировать мой диск LUKS при входе в систему. Я не хочу хранить свою кодовую фразу в скрипте, я хочу использовать кодовую фразу из ключевого слова:

Если вы перейдете на Passwords And Keys , есть куча безымянных клавиш. В их свойствах вы можете найти описание как gvfs-luks-uuid=xxxxxxxxxxxx , а также пароль для этого диска LUKS. Это то, что использует Ubuntu.

Один из вариантов, о котором я думал, это python-gnomekeyring , но он может получить только имя и пароль. Мне нужно, чтобы GUI вызывал «Технические детали», чтобы получить пароль для определенного uuid , потому что имя ключа всегда пусто.

    
задан Redsandro 01.03.2013 в 15:09
источник

3 ответа

7

Я думаю, что единственный ответ - через python , но есть две ошибки, которые усложняют ситуацию.

  1. Вам нужно вручную указать имена ваших ключей (Seahorse: Descriptions), поскольку идентификация деталей, используемых другими приложениями, недоступна в версии python. Я создал отчет об ошибке здесь: Ссылка
  2. Эти описания пусты в Seahorse в конкретном случае с ключами LUKS, но изменение пустого описания действительно изменяет имя ключа , поэтому вы можете искать его в python. Я создал отчет об ошибке здесь: Ссылка

Если вы работаете со сценариями и брелоками, укажите, что эти ошибки также влияют на вас.

  • Ошибка 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, пожалуйста, сообщите нам.

    
ответ дан Redsandro 04.03.2013 в 18:32
источник
18

Вы можете использовать секретные инструменты , чтобы хранить и извлекать пароль из брелка.

Чтобы сохранить новый пароль:

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

Позвольте вам проверить брелоки, как это выглядит. Чтобы просмотреть его (эта команда может быть легко вставлена ​​в ваш скрипт):

secret-tool lookup drive mydrive
    
ответ дан Aurelien 01.02.2014 в 23:32
1

Используйте Python Keyring Lib

У этого есть удобный CLI для использования в сценариях оболочки.

Установка

pip install keyring

Установка и получение ключей

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
    
ответ дан HarlemSquirrel 23.02.2018 в 22:56