Làm cách nào để lấy mật khẩu từ khóa trong thiết bị đầu cuối để sử dụng trong tập lệnh?


28

Khi bạn có một LUKSổ đĩa được mã hóa trong máy tính của mình, Nautilushoặc Nemosẽ hiển thị nó dưới Devicesdạng một ổ đĩa có khóa nhỏ trên đó.

Khi bạn nhấp vào nó, bạn cần nhập mật khẩu. Nếu bạn chọn remember this password forever, nó sẽ được lưu vào keyring của bạn. Khởi động tiếp theo, nhấp vào ổ đĩa sẽ ngay lập tức gắn kết nó.

Làm cách nào để tôi 'gắn ngay lập tức' một ổ đĩa mà cụm mật khẩu được lưu trong khóa, từ thiết bị đầu cuối? Tôi muốn có một tập lệnh tự khởi động sẽ gắn ổ đĩa LUKS của tôi khi tôi đăng nhập. Tôi không muốn lưu cụm mật khẩu của mình trong tập lệnh, tôi muốn sử dụng cụm mật khẩu từ khóa:

Nếu bạn đi đến Passwords And Keys, có một loạt các khóa không tên. Trong thuộc tính của họ, bạn có thể tìm thấy một mô tả như gvfs-luks-uuid=xxxxxxxxxxxxvà cả mật khẩu cho ổ đĩa LUKS đó. Đây là những gì Ubuntu sử dụng.

Một lựa chọn tôi nghĩ đến là python-gnomekeyringnhưng nó chỉ có thể lấy tên khóa và mật khẩu. Tôi cần những gì GUI gọi là 'Chi tiết kỹ thuật' để lấy mật khẩu cụ thể uuidvì tên khóa luôn trống.

Câu trả lời:


29

Bạn có thể sử dụng các công cụ bí mật để lưu trữ và truy xuất mật khẩu từ khóa.

Để lưu mật khẩu mới:

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

Tôi cho phép bạn kiểm tra xem keyring xuất hiện như thế nào. Để tìm kiếm nó (lệnh này có thể dễ dàng được chèn vào tập lệnh của bạn):

secret-tool lookup drive mydrive

Lưu ý rằng bí mật của công cụ bí mật là bạn không thể root để làm việc với các ví dụ!
Paul Flint

1
Liên kết chết - launchpad.net/ubfox/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew

9

Tôi nghĩ rằng câu trả lời duy nhất là thông qua python, nhưng có hai lỗi khiến mọi thứ trở nên khó khăn.

  1. Bạn cần tự cung cấp tên khóa của mình (Seahorse: Mô tả) vì xác định chi tiết mà các ứng dụng khác sử dụng không có sẵn trong phiên bản python. Tôi đã tạo một báo cáo lỗi tại đây: https://bugs.launchpad.net/ubfox/+source/gnome-python-desktop/+orms/1144781
  2. Các mô tả này trống trong Seahorse trong trường hợp cụ thể của các khóa LUKS, nhưng việc thay đổi mô tả trống thực sự thay đổi tên khóa để bạn có thể tìm nó trong python. Tôi đã tạo một báo cáo lỗi tại đây: https://bugs.launchpad.net/ubfox/+source/seahorse/+orms/1144703

Nếu bạn đang làm việc với các tập lệnh và dây móc khóa, vui lòng đề cập rằng các lỗi này cũng ảnh hưởng đến bạn.

Về pythonphần này, đây là một ví dụ:

#!/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()

Nếu bạn biết bất kỳ cách nào khác, ví dụ thông qua các lệnh bash đơn giản, vui lòng cho chúng tôi biết.


1
Một ví dụ python3?
Khurshid Alam

2

Sử dụng Python key Lib

Nó có CLI thuận tiện để sử dụng trong các kịch bản shell.

Cài đặt

pip install keyring

Cài đặt và nhận khóa

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.