스크립트에서 사용하기 위해 터미널의 키링에서 비밀번호를 얻으려면 어떻게해야합니까?


28

당신이있을 때 LUKS컴퓨터에 암호화 된 드라이브를, Nautilus또는 Nemo아래에 표시됩니다 Devices거기에 약간의 잠금 드라이브로.

클릭하면 비밀번호를 입력해야합니다. 을 선택하면 remember this password forever키링에 저장됩니다. 다음 부팅시 드라이브를 클릭하면 즉시 마운트됩니다.

터미널에서 암호 문구가 키링에 저장된 드라이브를 어떻게 '즉시 마운트'합니까? 로그인 할 때 LUKS 드라이브를 마운트하는 자동 시작 스크립트를 갖고 싶습니다. 스크립트에 비밀번호 문구를 저장하지 않고 키링에서 비밀번호 문구를 사용하고 싶습니다.

에 가면 Passwords And Keys이름없는 키가 많이 있습니다. 해당 등록 정보에서 설명과 gvfs-luks-uuid=xxxxxxxxxxxx해당 LUKS 드라이브의 암호를 찾을 수 있습니다 . 이것이 우분투가 사용하는 것입니다.

내가 생각한 한 가지 옵션 python-gnomekeyring은 키 이름과 암호 만 얻을 수 있습니다. uuid키 이름이 항상 비어 있기 때문에 GUI가 '기술 세부 사항'이라고 부르는 특정 암호를 얻으려면 필요합니다 .

답변:


29

secret-tools 를 사용 하여 키링에서 비밀번호를 저장하고 검색 할 수 있습니다 .

새 비밀번호를 저장하려면

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

열쇠 고리가 어떻게 나타나는지 확인하도록하겠습니다. 찾아 보려면 (이 명령을 스크립트에 쉽게 삽입 할 수 있습니다) :

secret-tool lookup drive mydrive

secret-tool의 비밀은 예제를 작업하는 데 뿌리를 내릴 수 없다는 것입니다!
Paul Flint

1
죽은 링크 - launchpad.net/ubuntu/+source/libsecret - TL; DRapt-get install libsecret-tools
마태 복음

9

나는 유일한 대답은을 통해 생각 python하지만, 일을 어렵게 만드는 두 가지 버그가 있습니다.

  1. 파이썬 버전에서는 다른 응용 프로그램에서 사용하는 세부 정보를 식별 할 수 없으므로 키 이름 (Seahorse : Descriptions) 을 수동으로 지정해야합니다 . https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781 에서 버그 보고서를 만들었습니다.
  2. 이 설명은 LUKS 키의 특정 경우 Seahorse에서 비어 있지만 빈 설명을 변경하면 실제로 키 이름이 변경 되므로 파이썬에서 찾을 수 있습니다. 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 명령과 같은 다른 방법을 알고 있다면 알려주십시오.


1
python3 예제?
Khurshid Alam

2

사용 파이썬 열쇠 고리 해방

쉘 스크립트에 사용하기 편리한 CLI가 있습니다.

설치

pip install keyring

키 설정 및 가져 오기

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.