Cara mengkonfigurasi gpg untuk memasukkan frasa sandi hanya satu kali per sesi

18

Apakah mungkin untuk mengkonfigurasi gpgdengan cara yang saya masukkan frasa sandi hanya sekali, dan itu akan berfungsi untuk seluruh sesi (saya menggunakan Ubuntu/XFce)?

Saya tidak yakin bagaimana cara gpgkerjanya, tampaknya fungsi defaultnya adalah gpgmeminta gpg-agentfrasa sandi dan agen menjalankan pin-entry untuk meminta frasa sandi.

Saya ingin menggunakan pinentry-curses hanya satu kali per sesi, jadi saya bisa menempelkan passphrase saya (saya punya hexstring dari kalimat - saya menggunakan echo -n <SENTENCE> | str-hex) dan menandatangani email dari Claws Mail tanpa meletakkan passphrase (Anda tidak dapat menggunakan pinentry-curses dengan Claws Surat).

jcubic
sumber

Jawaban:

16

Anda dapat menggunakan teknik yang dijelaskan di halaman ini:

http://fvue.nl/wiki/Debian_4.0:_Installing_gpg-agent

Inilah intinya:

  1. Instal program gpg-agent dan pinentry:

    sudo apt-get install gnupg-agent pinentry-curses
    
  2. Tambahkan baris di bawah ini ke ~/.profile. Setiap shell yang mengonfirmasi POSIX harus menyertakan file ini.

    # Invoke GnuPG-Agent the first time we login.
    # Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    

    Skrip kecil ini akan diaktifkan ketika Anda login. Jika agen tidak berjalan, itu akan dimulai. Ketika agen dimulai, itu menunjukkan bagaimana mengatur variabel lingkungan untuk menghubungkannya. Skrip menyimpan nilai-nilai ini di ~/.gpg-agent-info, sehingga ketika Anda memulai sesi login lain skrip dapat mengatur variabel dengan benar dan dengan demikian menggunakan agen.

Anda hanya perlu memasukkan frasa sandi satu kali per boot. Agen akan menyimpan kunci Anda di memori, sehingga Anda tidak perlu memasukkan frasa sandi lagi.

janos
sumber
Saya telah menggunakan skrip ini dengan senang hati, tetapi akan gagal secara acak. Akhirnya, saya memodifikasi persyaratan ini GPG_PROCESS=`cut -d: -f 2 $HOME/.gpg-agent-info` if test -f $HOME/.gpg-agent-info && \ kill -0 ${GPG_PROCESS} 2>/dev/null && \ [[ ${GPG_PROCESS} == `pgrep -x -u "${USER}" gpg-agent` ]] ; thendan itu berfungsi dengan baik. Masalahnya adalah skrip di atas memeriksa apakah proses dalam .gpg-agent-infohidup dan menerima sinyal dengan kill -0. Jika ada proses di sana, tetapi tidak gpg-agent, kita mendapatkan perilaku yang salah. Kode terlampir memeriksa apakah kita memiliki proses yang benar.
wyer33