Praktik Terbaik untuk Agen SSH, tmux & GnuPG

12

Saya mencoba untuk mengkonsolidasikan perangkat lunak enkripsi saya ke GnuPG, dan saya mengalami masalah yang membingungkan.

Unit utama saya adalah server tanpa kepala, dan saya bekerja secara eksklusif di tmux. Tidak ada sesi X, dan karena itu saya mengkonfigurasi gpg-agent untuk menggunakan pinentry-curses. Saya telah mengkonfigurasi gpg-agent untuk dipanggil saat login dengan emulasi ssh-agent dengan skrip ini:

if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then
    eval `cat $gnupginf`
    eval `cut -d= -f1 $gnupginf | xargs echo export`
else              
    eval `gpg-agent -s --enable-ssh-support --daemon`
fi

Saya sudah menambahkan kunci ssh saya ke gpg-agent, namun ketika saya mencoba sesi ssh lain perintahnya hang.

Saya telah menemukan bahwa jika saya membunuh gpg-agent dan membuat shell login baru, agen berfungsi sebagaimana mestinya (memanggil pinentry-curses kemudian bekerja seperti ssh-agent).

Namun, jika saya membuat shell login lain (dengan, katakanlah, membuka panel tmux lain) dan mencoba ssh, perintah hang dan jendela pinentry-curses dicetak di atas isi shell login yang awalnya meluncurkan agen.

Selanjutnya, jika saya telah menutup shell yang awalnya meluncurkan agen, pinentry-curses disebut pula dan menyebabkan loop tak terbatas cpu-crippling. (Bug yang dikenal, lihat http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559936 .)

Intinya, saya ingin tahu apa yang harus diubah tentang pengaturan saya untuk membuat agen GnuPG bekerja dengan mulus seperti ssh-agent. Terima kasih atas bantuannya!

Tammer Ibrahim
sumber

Jawaban:

4

Ternyata ini sangat sederhana. Alih-alih menggunakan skrip itu, saya cukup menghapus opsi "--agen" dari skrip peluncuran gantungan kunci lama saya (panduan di sini ).

Ini menyebabkan program Keychain mencari file ssh-agent DAN gpg-agent. Sekarang sistem enkripsi saya bekerja dengan sangat mulus, bahkan ketika mengandalkan kedua jenis agen.

Tammer Ibrahim
sumber