GPG Agent'ın şifremi önbelleğe almasını nasıl sağlayabilirim?


21

Ben bir geliştiriciyim ve genellikle Git'in taahhütlerini GPG anahtarımla imzaladım. GPG Agent'ın OSX'te düzgün çalışmasını sağladım, böylece sadece günde bir kez şifremi sormam gerekiyor, fakat aynı şeyi Ubuntu 16.04'te çalışırken de sorun yaşıyorum.

İşte ne yapıyorum:

  • GPG anahtarlarımın kurulumunu yaptım / vb.
  • Git dizinindeyim.
  • Git'e bazı dosyalar ekliyorum.
  • Onları ( git commit) taahhüt etmeye gidiyorum ve şuna benzeyen bir GPG şifresi isteği alıyorum :

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

Sorun şudur: Ne zaman bir taahhüt verirsem, tekrar GPG şifremi istenir.

Yapmak istediğim GPG Agent'ı şifremi 1 tam gün önbelleğe alacak şekilde yapılandırmak, bu yüzden yalnızca bir kez girilmesi gerekiyor.

Tonlarca belge ve blog yazısı okudum, işte şimdiye kadar denedim ...

İlk önce, ~/.zshrcaşağıdakileri ayarlamak için dosyamı değiştirdim (zsh kullanıyorum):

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

Şimdi, okuduklarımdan, bu tek başına gpg-agent'ı yeniden başlattıktan sonra hile yapmalı, ama yapmıyor.

Böylece, bir sonraki yaptığım sayfada ~/.gnupg/gpg-agent.confaçıklandığı gibi bir dosya tanımladım man gpg-agent:

# 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

Bunun da bir etkisi yoktur.

Ayrıca çeşitli blog yöntemlerini de denedim. Birisi eksik olabileceğim şeyler hakkında bana bazı ipuçları verebilir mi?

Yanıtlar:


24

Önbellek zamanlarını ayarlamanın yanı sıra gpg-agent.conf, GnuPG'nin gerçekten ara yüzleştiğinden de emin olmalısınız gpg-agent. GnuPG 2 ve üzeri genellikle yapar, ancak GnuPG 1 dalı değildir. Varsayılan olarak git gpg(bu yanıtı yazarken) hala GnuPG 1 olan ikili, GnuPG 2 gpg2çoğu sistemde olduğu gibi kurulur .

Sonunda, iki olasılık var:

  • gpg2Git yapılandırmasını değiştirerek kullanmak için git'i ayarlayın :

    git config --global gpg.program gpg2
    
  • ayarlamak gpgkullanımına (GnuPG'yi 1) gpg-agenteklenerek use-agentiçingpg.conf

0

Yukarıdaki cevap ek olarak, ayrıca sadece varsayılan değiştirebilir gpgiçin sisteminizde gpg2ziyade gpg1.

Eğer git config --global gpg.program gpg2sizin için çalışıyorsa, ancak bunu git config içinde bırakmak istemiyorsanız (benim durumumda aynı konfigürasyonu macOS'ta kullanıyorum) o zaman varsayılanı değiştirebilirsiniz gpg.

Buradaki kılavuzu izledim , ki bu:

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

Bu gpg1eski gpgikili ve sembolik işaretleri yapar /usr/bin/gpg -> /usr/bin/gpg2(gnupg ismiyle ve öncelik 50 ile).

Varsayılanı değiştirmek gpgteoride sisteminizdeki bazı paketleri bozabilir, ancak Debian Stretch (Debian'ın şu anki kararlı sürümü) benzer şekilde varsayılan olarak ayarlargpg2gpg , bu yüzden çok fazla sorun yaşamamalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.