Simpan cache GnuPG di-cache untuk seluruh sesi pengguna

53

GnuPG dapat, dengan gpg-agent, cache akses ke kunci pribadi. Bagaimana saya bisa membuat cache itu aktif untuk seluruh sesi pengguna ?

Ketika saya membuka kunci untuk gpg-agent, itu hanya tinggal di-cache untuk waktu yang terbatas. Dengan agen SSH, saya memasukkan frasa sandi satu kali dan tetap di-cache untuk seluruh sesi. Saya ingin perilaku yang sama gpg-agent.

Jadi, ssh-agenttidak menderita masa cache yang terbatas. Tetapi gpg-agentmembatasi masa cache, setidaknya secara default. Bagaimana saya bisa menghilangkan batas waktu cache dari gpg-agent?

hidung besar
sumber

Jawaban:

69

Hingga GnuPG 2

Konfigurasi pengguna (dalam ~/.gnupg/gpg-agent.conf) hanya dapat menentukan durasi caching default dan maksimum; itu tidak dapat dinonaktifkan.

The default-cache-ttlpilihan menetapkan batas waktu (dalam detik) setelah aktivitas GnuPG terakhir (sehingga me-reset jika Anda menggunakannya), yang maximum-cache-ttlpilihan set rentang waktu (dalam detik) cache setelah memasukkan password Anda. Nilai default adalah 600 detik (10 menit) untuk default-cache-ttldan 7200 detik (2 jam) untuk maximum-cache-ttl.

Setel ke sekitar satu tahun - katakanlah, 34560000 detik (400 hari) - dan Anda akan baik-baik saja:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Tetapi agar perubahan ini berlaku, Anda harus mengakhiri sesi dengan memulai kembali gpg-agent.

Jika Anda ingin membatasi panjang sesi Anda, Anda harus mematikan daemon saat logout. Ini sangat berbeda antara sistem operasi, jadi saya mengacu pada pertanyaan / jawaban lain yang berisi petunjuk untuk sistem yang berbeda .

Anda juga bisa memulai ulang gpg-agentselama login, tetapi ini tidak membatasi waktu caching hingga panjang sesi, tetapi login pengguna. Putuskan sendiri apakah ini masalah dalam kasus Anda.

GnuPG 2.1 dan lebih tinggi

Di GnuPG 2.1 dan di atasnya, maximum-cache-ttlopsi diubah namanya menjadi max-cache-ttltanpa perubahan lebih lanjut.

Jens Erat
sumber
Apakah ini jawaban "Anda tidak bisa melakukan apa yang Anda minta"? Tidak jelas, karena Anda berbicara tentang membatasi panjang sesi atau membatasi waktu caching. Saya ingin persis kebalikan dari itu: tidak ada batasan sewenang-wenang pada waktu cache atau panjang sesi.
bignose
Semacam itu, Anda hanya bisa mengatasinya dengan mengatur ttl yang agak besar. Setel ke sekitar satu tahun atau lebih dan Anda akan baik-baik saja - tetapi harus mengakhiri sesi dengan memulai kembali gpg-agent.
Jens Erat
Harap dicatat bahwa dalam versi terbaru (setidaknya gnupg 2.1), maximum-cache-ttlopsi tidak ada. Untuk melihat opsi yang benar, lihat dokumentasi resmi: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.
3
Paling tidak di GnuPG 2.1 default untuk default-cache-ttladalah 600 detik (10 menit), bukan dua jam.
jlh
@ jlh Melihat halaman manual untuk berbagai versi gpg-agent, nilai yang benar tampaknya 10 menit untuk semua rilis. Saya mengedit jawabannya, terima kasih telah menunjukkan ini.
Jens Erat
7

Untuk Windows

File yang Anda perlu edit harus ditempatkan di: $env:AppData\gnupg

Jika Anda menjalankannya di jendela PowerShell itu akan terbuka: C:\Users\<UserName>\AppData\Roaming\gnupg

Cukup letakkan gpg-agent.conffile di sana dengan nilai apa pun yang Anda suka.

Anda dapat memverifikasi itu dengan menjalankan:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Anda juga dapat menggunakan liner satu ini: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"

CubanX
sumber
Jika jawaban kedua di sini tidak sesuai, kami dapat memindahkannya ke pertanyaannya sendiri, ditandai dengan Windows. Tidak yakin apa yang benar :)
CubanX
Terima kasih dan simpan di sini - senang memiliki semua info di satu tempat. 👍
barfuin
5

Pastikan untuk memuat ulang agen gpg Anda gpg-connect-agent reloadagent /byesetelah mengubah konfigurasi.

SuperSandro2000
sumber