Tôi quyết định xem xét lại điều này một lần nữa và tìm ra cách nó hoạt động. GPG sử dụng thuật ngữ "bộ đệm" để lưu trữ mật khẩu. Hai ràng buộc có thể được áp đặt cho thời gian lưu trữ tối đa:
- Thời gian để giữ cụm mật khẩu kể từ khi khóa ban đầu được thêm vào.
- Thời gian để giữ một cụm mật khẩu kể từ lần truy cập cuối cùng.
Ngoài ra, có hai biến thể tồn tại cho cả hai ràng buộc, một cho khóa GPG và một cho khóa SSH (nếu hỗ trợ được bật).
Các mục hướng dẫn sử dụng có liên quan từ gpg-agent(1)
:
--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default
is 600 seconds.
--default-cache-ttl-ssh n
Set the time a cache entry used for SSH keys is valid to n sec‐
onds. The default is 1800 seconds.
--max-cache-ttl n
Set the maximum time a cache entry is valid to n seconds. After
this time a cache entry will be expired even if it has been
accessed recently. The default is 2 hours (7200 seconds).
--max-cache-ttl-ssh n
Set the maximum time a cache entry used for SSH keys is valid to
n seconds. After this time a cache entry will be expired even
if it has been accessed recently. The default is 2 hours (7200
seconds).
Cụm mật khẩu luôn được lưu trong bộ nhớ cache (trong bộ nhớ, không phải trên đĩa! Được xác minh bằng repo git của $HOME
), do đó không có nhu cầu rõ ràng cho ssh-add
. Ví dụ: ký dữ liệu giả sẽ kích hoạt bộ đệm:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Để thực hiện thay đổi vĩnh viễn cho cài đặt bộ đệm của gpg-agent, hãy chỉnh sửa ~ / .gnupg / gpg-agent.conf` và thêm một cái gì đó như:
default-cache-ttl 60 # Expire GPG keys when unused for 1 minute
max-cache-ttl 600 # Expire GPG keys after 10 minutes since addition
Tôi đã cố gắng kích hoạt hỗ trợ đại lý SSH bằng cách chỉ định enable-ssh-support
, nhưng điều này làm cho tác nhân gpg yêu cầu bạn lấy một khóa khác để mã hóa khóa và sau đó lưu khóa riêng của bạn vào ~/.gnupg/private-keys.d/
. Không đi cho tôi, tôi sẽ theo cách tiếp cận ssh-agent / gpg-agent kép sau đó.
Một số mẹo thưởng:
- Tương đương với tác nhân SSH
max-cache-ttl-ssh
có thể được chỉ định khi thêm khóa, ví dụ:ssh-add -t 600 ~/.ssh/id_rsa
Để ngăn lưu trữ cụm mật khẩu GPG trong tác nhân, hãy vô hiệu hóa tác nhân. Trong các phiên bản GPG mới hơn, tùy chọn --no-use-agent
bị bỏ qua, nhưng bạn có thể ngăn tác nhân được sử dụng bằng cách xóa biến môi trường liên quan. Một số cách để làm như vậy:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
gpg-connect-agent
chưa