Cache tất cả mật khẩu khóa con gpg cùng một lúc? Ngăn chặn cần nhập nhiều mật khẩu gpg?


10

Tôi có thể nhập mật khẩu gpg của mình chỉ một lần và mở khóa tất cả các khóa phụ của mình (ký, giải mã, xác thực) không?

Hiện tại, tôi cần nhập mật khẩu gpg ba lần (để ký, để giải mã, để xác thực). Điều này thật bất tiện.

Tôi đã cố gắng đưa ra một kịch bản shell.

#!/bin/bash
set -x
set -e
set +o history

signing_key=77BB3C48
encryption_key=CE998547

tempfile="$(mktemp)"
echo "test" > testfile

unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo

exec 3<<<"$passphrase"

gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"

gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"

exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"

Nhưng thật không may, cách đó mật khẩu gnupg-agent không lưu mật khẩu. Điều này có thể được sửa chữa?

Thông tin hệ thống:

  • Khi không sử dụng tập lệnh shell đó, tôi không gặp vấn đề gì với gnupg-agent. Khi tôi ký / giải mã thủ công một tệp trong shell, pinentry yêu cầu mật khẩu hai lần, sau đó lưu lại cho đến khi khởi động lại.
  • Sử dụng Debian Wheezy.
  • phiên bản gpg:

dpkg -l | grep gnupg

ii  gnupg                                        1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement
ii  gnupg-agent                                  2.0.22-3                           i386         GNU privacy guard - password agent
ii  gnupg-curl                                   1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement (cURL)
ii  gnupg2                                       2.0.22-3                           i386         GNU privacy guard - a free PGP replacement (new v2.x)

Tôi đã hỏi trên danh sách gửi thư của người dùng gnupg một lúc trước, nhưng không trả lời.

Có lẽ câu trả lời này sẽ làm việc? Có lẽ gpg-connect-agentlà bắt buộc?


Tôi rất ấn tượng: exec 3<<<"$passphrase"thậm chí còn mới đối với tôi ... Và tôi vừa ném 250 tiền thưởng vào câu trả lời mà bạn trích dẫn.
Hauke ​​Laging 6/214

Câu trả lời:


3

gnome-keyring-daemoncá ngựa giúp cho việc quản lý khóa & mật khẩu rất dễ dàng.

Về cơ bản nếu bạn đang chạy gnome-keyring-daemon với tư cách là một tác nhân gpg, nó có khả năng tự động mở khóa các khóa GPG của bạn. Nó thực hiện điều này bằng cách duy trì khóa mật khẩu, chứa mật khẩu cho những thứ như trang web, khóa GPG, khóa SSH, v.v ... Khóa mật khẩu này sau đó được bảo mật bằng mật khẩu của chính nó. Vì vậy, bạn mở khóa nó, và khóa gnome mở khóa mọi thứ khác.
Là một phần thưởng bổ sung, gnome-keyring-daemon có khóa "đăng nhập", nếu mật khẩu của nó khớp với mật khẩu người dùng của bạn, khóa sẽ tự động được mở khóa khi bạn đăng nhập.


Cấu hình

Làm thế nào để làm việc này? Chỉ cần cài đặt gnome-keyring-daemon và cá ngựa. Các gói nên làm tất cả các cấu hình hệ thống cho bạn. Chỉ cần đảm bảo rằng bạn không bắt đầu một trình nền khóa hoặc đại lý GPG khác . Bất cứ khi nào bắt đầu "chiến thắng" cuối cùng, và khóa gnome bắt đầu trong ngăn xếp PAM, vì vậy cực kỳ sớm.

Nếu các khóa GPG của bạn được lưu trữ ~/.gnupg, nó sẽ tự động lấy chúng và đóng vai trò là tác nhân GPG cho chúng. Tương tự với các khóa SSH được lưu trữ trong~/.ssh

Lần đầu tiên bạn thử sử dụng khóa riêng, bạn sẽ nhận được một hộp thoại giống như thế này: (Tôi đã kích hoạt nó bằng một dòng lệnh đơn giản gpg -d myfile.gpg) mở khóa
Chỉ cần chọn "Tự động mở khóa phím này bất cứ khi nào tôi đăng nhập"

Bây giờ chúng tôi chưa thực sự nói về cá ngựa. Đó là bởi vì nó không thực sự cần thiết. Tất cả điều này đã được thực hiện chỉ với gnome-keyring-daemon thông thường. Tuy nhiên với cá ngựa, bạn có thể xem và quản lý tất cả các phím và dây móc khóa của mình. Và nếu bạn sử dụng xác thực tập trung (LDAP), bạn sẽ cần sử dụng nó khi bạn thay đổi mật khẩu đăng nhập để thay đổi mật khẩu trên khóa "đăng nhập" để khớp với mật khẩu.

cá ngựa - phím gpg


Mật khẩu khác

Như đã đề cập trước đó, gnome-keyring-daemon cũng có thể lưu trữ mật khẩu trang web. Lần trước tôi đã kiểm tra chrome hỗ trợ này, nhưng firefox thì không. Tuy nhiên, có một mẹo để làm cho nó hoạt động.
Theo mặc định, bạn sẽ có 2 dây khóa, khóa "đăng nhập" và khóa "mặc định". Khóa "mặc định" là mặc định (do đó là tên). Nhưng đó là một khóa riêng biệt, vì vậy nó không tự động được mở khóa. Trong cá ngựa, nếu bạn nhấp chuột phải vào phím "đăng nhập", sẽ có tùy chọn "đặt làm mặc định". Chọn cái này và nó sẽ bắt đầu được sử dụng cho mật khẩu. Cá nhân tôi chỉ cần xóa cái "mặc định" và sử dụng "đăng nhập" cho mọi thứ.


Quá tệ Tôi không phải là một người dùng gnome. Tôi đã làm sudo apt-get remove gnupg-agentsudo apt-get install gnome-keyring seahorse. Sau đó tạo một tệp /etc/X11/Xsession.d/999gnomekeyringcó nội dung sau. eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK(Nếu không, khóa gnome thậm chí sẽ không bắt đầu trong KDE.) Bây giờ, khi tôi chạy gpg -d myfile.gpg, tôi sẽ được hỏi mật khẩu và nó sẽ được lưu vào bộ nhớ cache, nhưng tôi chưa bao giờ được nhắc với hộp thoại này .
adrelanos

(Điều này là xấu, bởi vì tôi trở lại nơi tôi bắt đầu Chìa khóa ký sẽ được lưu trữ riêng biệt..) (Có một dòng mới giữa eval và dòng xuất khẩu, không thể với các đánh dấu bình luận ở đây.)
adrelanos

Tôi cũng không sử dụng gnome cho trình quản lý máy tính để bàn của mình. Nó không bắt buộc. Gnome làm được nhiều hơn là chỉ quản lý máy tính để bàn của họ. Bạn không cần phải thêm bất cứ điều gì vào /etc/X11/Xsession.d. Điều đó được cho là được thực hiện trong ngăn xếp PAM. Bạn nên có một session optional pam_gnome_keyring.so auto_startmục trong một hoặc nhiều tệp trong /etc/pam.d. Thật không may, tôi không sử dụng debian vì vậy tôi không biết cái nào. Nếu không có thì đó là vấn đề.
Patrick

Không thêm vào /etc/X11/Xsession.d, ps aux | grep gnomecho thấy gnome-keyring-daemon không được bắt đầu. (Tuy nhiên, đã xóa nó.) /usr/share/doc/libpam-gnome-keyring/README.DebianNói If you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start(dòng mới bị xóa bởi các bình luận se). Đã làm điều đó, thêm vào /etc/pam.d/kdm, khởi động lại kdm. Không tải đại lý, không có sẵn.
adrelanos

Tôi thua lỗ. Nếu bạn đang sử dụng kdmvà bạn đặt nó vào /etc/pam.d/kdm, điều đó sẽ làm điều đó. Điều duy nhất tôi có thể đề nghị nếu bạn vẫn muốn theo đuổi con đường này là đào qua nhật ký. Xin lỗi vì hy vọng sai lầm, nghĩ rằng đây sẽ là một giải pháp đơn giản cho bạn.
Patrick

0

Tôi đã thực hiện một số điều tra và kết quả thật đáng ngạc nhiên với tôi nhưng đơn giản:

Khi được gọi theo cách gpgnày không giao tiếp với gpg-agent tất cả ! gpgcó khả năng tự thực hiện tất cả các hoạt động này.

Nhưng nếu gpg-agentthậm chí không biết rằng có điều gì đó đã xảy ra thì nó khó có thể biết một cụm mật khẩu mà trước đó nó không biết.


Hình như tôi đã khám phá ra một cách, làm thế nào điều này không thể được giải quyết.
adrelanos

Câu hỏi ban đầu của tôi vẫn còn mở. (Đó là Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) Tôi hy vọng chuyển mật khẩu vào gpg-agenthoặc gpg-connect-agentbằng cách nào đó có thể.
adrelanos
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.