Gpg-agent'ı ssh-agent + ssh-add ile nasıl kullanırım?


15

ssh-agentkullanımı çok kolay, ben başlatmak ve kullanarak anahtarları eklemek ssh-add keyfile. İşlemi öldürdükten sonra ssh-agenttüm dosyalar kaybolur.

İle aynı davranışı nasıl alabilirim gpg-agent? Bulduğum en yakın program gpg-preset-passphrase. Ancak, manuel sayfasına bakıldığındagpg-agent , özel anahtarları saklamak için bir dizin oluşturulmuş gibi görünüyor.

Ben yanlış olabilir, bu yüzden nasıl gpg-agenthiçbir dosya / dizin oluşturulan şekilde nasıl kurulum merak ediyorum ? Mümkün değilse, + gpg-agentgibi iş yapmak için başka öneriler de kabul edilir. Seahorse gibi GUI çözümleri aramıyorum.ssh-agentssh-add


kontrol ettin gpg-connect-agentmi
Smithamax

@Smithamax hayır, ancak aynı işlevi kullanıyor gibi görünüyor gpg-preset-passphrase. Koştum gpg-connect-agent, bir mermi aldım ve setkey IDOFMYPRIVATEKEYHEREonu takip ettim preset_passphraseve id "ERR 67108924 Desteklenmeyen <GPG-agent> - hayır - allow-preset-passphrase" ile
sonuçlandı

Yanıtlar:


13

Buna tekrar bakmaya karar verdim ve nasıl çalıştığını öğrendim. GPG, şifreleri saklamak için "önbellek" terminolojisini kullanır. Maksimum saklama süresinde iki kısıtlama uygulanabilir:

  • Anahtar başlangıçta eklendiğinden beri parolayı saklama süresi.
  • Son erişildiğinden beri bir parolayı saklama süresi.

Ayrıca, biri GPG anahtarları, diğeri SSH anahtarları için (destek etkinleştirildiyse) her iki kısıtlama için iki varyasyon vardır.

İlgili manuel sayfa girişleri 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).

Parolalar her zaman önbelleğe alınır (bellekte değil, diskte değil! Git deposu ile doğrulanır $HOME), bu yüzden açık bir ihtiyaç yoktur ssh-add. Örneğin, sahte verilerin imzalanması önbelleği zaten tetikler:

$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)

Gpg-agent'ın önbellek ayarlarında kalıcı değişiklikler yapmak için ~ / .gnupg / gpg-agent.conf` dosyasını düzenleyin ve şöyle bir şey ekleyin:

default-cache-ttl  60     # Expire GPG keys when unused for 1 minute
max-cache-ttl     600     # Expire GPG keys after 10 minutes since addition

SSH aracı desteğini belirterek etkinleştirmeye çalıştım enable-ssh-support, ancak bu gpg aracısının anahtarı şifrelemek için başka bir anahtar istemesini sağlar ve sonra özel anahtarınızı saklar ~/.gnupg/private-keys.d/. Benim için hayır, o zaman ikili bir ssh-agent / gpg-agent yaklaşımına bağlı kalacağım.

Bazı bonus ipuçları:

  • max-cache-ttl-sshAnahtar eklenirken SSH aracısının eşdeğeri belirtilebilir, örneğin:ssh-add -t 600 ~/.ssh/id_rsa
  • GPG parolasını aracıda depolamayı önlemek için aracıyı devre dışı bırakın. Daha yeni GPG sürümlerinde seçenek --no-use-agentyok sayılır, ancak ilgili ortam değişkenini temizleyerek aracının kullanılmasını önleyebilirsiniz. Bunu yapmanın bazı yolları:

    echo | GPG_AGENT_INFO= gpg -s         # temporary
    export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
    

benim makine sürekli tekrar tekrar parola istiyor
don parlak

@donbright Yalnızca bir tane gpg-agentetkin olduğundan emin misiniz ? (İşlem listesini kontrol edin, örneğin ps u -C gpg-agent). Önbellek zaman aşımı uygun şekilde ayarlandı mı? İmzalamak için kullanırsanız ((SSH) kimlik doğrulamasının aksine), ignore-cache-for-signingseçenek ayarlanmamış mı?
Lekensteyn

Teşekkürler. benim sorunum ben gpg 2 yerine gpg 1.4 kullanarak olduğu ortaya çıktı, ubuntu üzerinde hangi paketleri yüklemeniz gerekiyor kafa karıştırıcı olabilir.
don parlak
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.