Saya memutuskan untuk melihatnya lagi dan mencari tahu cara kerjanya. GPG menggunakan terminologi "cache" untuk menyimpan kata sandi. Dua kendala dapat dikenakan pada waktu penyimpanan maksimum:
- Waktu untuk menyimpan frasa sandi sejak kunci awalnya ditambahkan.
- Waktu untuk menyimpan kata sandi sejak diakses terakhir kali.
Selain itu, ada dua variasi untuk kedua kendala, satu untuk kunci GPG dan satu untuk kunci SSH (jika dukungan diaktifkan).
Entri halaman buku panduan yang relevan dari 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).
Frasa sandi selalu di-cache (dalam memori, bukan pada disk! Diverifikasi dengan repositori git $HOME
), jadi tidak perlu secara eksplisit ssh-add
. Misalnya, menandatangani data dummy telah memicu cache:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Untuk membuat perubahan permanen pada pengaturan cache agen gpg, edit ~ / .gnupg / gpg-agent.conf` dan tambahkan sesuatu seperti:
default-cache-ttl 60 # Expire GPG keys when unused for 1 minute
max-cache-ttl 600 # Expire GPG keys after 10 minutes since addition
Saya telah mencoba mengaktifkan dukungan agen SSH dengan menentukan enable-ssh-support
, tetapi ini membuat gpg-agent meminta Anda untuk kunci lain untuk mengenkripsi kunci, dan kemudian menyimpan kunci pribadi Anda ~/.gnupg/private-keys.d/
. Tidak usah, saya akan tetap menggunakan pendekatan dual ssh-agent / gpg-agent.
Beberapa tips bonus:
- Setara dengan agen SSH
max-cache-ttl-ssh
dapat ditentukan saat menambahkan kunci, misalnya:ssh-add -t 600 ~/.ssh/id_rsa
Untuk mencegah penyimpanan frasa sandi GPG di agen, nonaktifkan agen. Dalam versi GPG yang lebih baru, opsi --no-use-agent
ini diabaikan, tetapi Anda bisa mencegah agar agen tidak digunakan dengan menghapus variabel lingkungan yang terkait. Beberapa cara untuk melakukannya:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
gpg-connect-agent
?