Bagaimana saya bisa mendapatkan Agen GPG untuk menyimpan kata sandi saya?

21

Saya seorang pengembang, dan saya biasanya menandatangani komitmen Git dengan kunci GPG saya. Saya sudah bisa membuat GPG Agent berfungsi dengan benar di OSX sehingga hanya meminta saya untuk kata sandi saya sekali sehari, tapi saya mengalami masalah untuk mendapatkan hal yang sama bekerja di Ubuntu 16.04.

Inilah yang saya lakukan:

  • Saya punya pengaturan kunci GPG saya / dll.
  • Saya berada di direktori Git.
  • Saya menambahkan beberapa file ke Git.
  • Saya kemudian pergi untuk mengkomitnya ( git commit), dan mendapatkan permintaan kata sandi GPG yang terlihat seperti ini:

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <[email protected]>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

Masalahnya adalah: setiap kali saya melakukan komit, saya diminta kembali untuk kata sandi GPG saya lagi.

Yang ingin saya lakukan adalah mengonfigurasi Agen GPG untuk menyimpan kata sandi saya selama 1 hari penuh, jadi hanya perlu dimasukkan satu kali.

Saya telah membaca banyak dokumentasi dan posting blog, dan inilah yang saya coba sejauh ini ...

Pertama, saya memodifikasi ~/.zshrcfile saya (saya menggunakan zsh) untuk mengatur yang berikut:

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

Sekarang, dari apa yang saya baca, ini saja yang harus dilakukan setelah me-restart gpg-agent, tetapi tidak.

Jadi, hal berikutnya yang saya lakukan adalah mendefinisikan ~/.gnupg/gpg-agent.conffile seperti yang dijelaskan di man gpg-agenthalaman:

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

Ini juga tidak berpengaruh.

Saya juga mencoba berbagai metode blog, dll., Tetapi sepertinya tidak ada yang berhasil. Bisakah seseorang memberi saya beberapa petunjuk untuk hal-hal yang mungkin saya lewatkan?

rdegges
sumber

Jawaban:

24

Selain mengatur waktu cache gpg-agent.conf, Anda juga harus memastikan GnuPG benar-benar berinteraksi dengan gpg-agent. GnuPG 2 dan ke atas pada umumnya, tetapi cabang GnuPG 1 tidak. Secara default git menggunakan gpgbiner, yang (pada saat menulis jawaban ini) masih GnuPG 1, sedangkan GnuPG 2 diinstal seperti gpg2pada kebanyakan sistem.

Pada akhirnya, Anda memiliki dua kemungkinan:

  • atur git untuk digunakangpg2 dengan mengubah konfigurasi git:

    git config --global gpg.program gpg2
    
  • atur gpg(GnuPG 1) untuk digunakan gpg-agentdengan menambahkan use-agentkegpg.conf
Jens Erat
sumber
0

Selain jawaban di atas, Anda juga bisa hanya mengubah default gpgdi sistem Anda gpg2daripada menjadi gpg1.

Jika git config --global gpg.program gpg2berfungsi untuk Anda, tetapi Anda tidak ingin meninggalkannya di konfigurasi git Anda (dalam kasus saya karena saya menggunakan konfigurasi yang sama pada macOS) maka Anda dapat menukar defaultnya gpg.

Saya mengikuti panduan di sini , yang hanya:

$ sudo mv /usr/bin/gpg /usr/bin/gpg1
$ sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

Ini membuat biner gpg1lama gpg, dan symlinks /usr/bin/gpg -> /usr/bin/gpg2(dengan nama gnupg dan prioritas 50).

Mengubah secara default gpgbisa secara teori memecah beberapa paket pada sistem Anda, tetapi Debian Stretch (versi stabil Debian saat ini) ditetapkan gpg2sebagai defaultgpg dengan cara yang sama, jadi Anda seharusnya tidak memiliki terlalu banyak masalah.

gib
sumber