Bisakah saya memasukkan kata sandi gpg saya sekali saja dan membuka kunci semua kunci sub saya (penandatanganan, dekripsi, otentikasi)?
Saat ini, saya perlu memasukkan kata sandi gpg saya tiga kali (untuk penandatanganan, untuk dekripsi, untuk otentikasi). Ini tidak nyaman.
Saya mencoba membuat skrip shell.
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
Namun sayangnya, dengan cara itu kata sandi gnupg-agent tidak men-cache kata sandi. Bisakah ini diperbaiki?
Sistem Informasi:
- Ketika tidak menggunakan skrip shell, saya tidak punya masalah dengan gnupg-agent. Ketika saya secara manual menandatangani / mendekripsi file dalam shell, pinentry meminta kata sandi dua kali, kemudian menyimpannya sampai reboot.
- Menggunakan Debian Wheezy.
- versi gpg:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
Saya sudah bertanya di milis gnupg-pengguna beberapa waktu lalu, tetapi tidak ada jawaban.
Mungkin jawaban ini akan berhasil? Mungkin gpg-connect-agent
diperlukan?
shell-script
gpg
gpg-agent
adrelanos
sumber
sumber
exec 3<<<"$passphrase"
bahkan baru bagi saya ... Dan saya baru saja memberikan hadiah 250 rep pada jawaban yang Anda kutip.Jawaban:
Ada daemon gnome-keyring- dan kuda laut yang membuat manajemen kunci & kata sandi sangat mudah.
Pada dasarnya jika Anda menjalankan gnome-keyring-daemon sebagai agen gpg, ia memiliki kemampuan untuk membuka kunci GPG Anda secara otomatis. Ini dilakukan dengan mempertahankan keyring kata sandi, yang berisi kata sandi untuk hal-hal seperti situs web, kunci GPG, kunci SSH, dll. Kata kunci kata sandi ini kemudian diamankan dengan kata sandi itu sendiri. Jadi Anda membukanya, dan keyring gnome membuka semua yang lainnya.
Sebagai bonus tambahan, gnome-keyring-daemon memiliki keyring "login", yang jika itu cocok dengan kata sandi pengguna Anda, maka keyring tersebut secara otomatis akan dibuka ketika Anda masuk.
Konfigurasi
Bagaimana cara kerjanya? Cukup instal gnome-keyring-daemon dan kuda laut. Paket harus melakukan semua konfigurasi sistem untuk Anda. Hanya pastikan Anda tidak mulai lain daemon keyring atau agen GPG . Apapun yang dimulai "kemenangan" terakhir, dan keyring gnome dimulai di tumpukan PAM, sangat awal.
Jika kunci GPG Anda disimpan
~/.gnupg
, secara otomatis akan mengambilnya dan bertindak sebagai agen GPG untuk mereka. Hal yang sama berlaku untuk kunci SSH yang disimpan di~/.ssh
Pertama kali Anda mencoba menggunakan kunci pribadi, Anda akan mendapatkan dialog yang terlihat seperti ini: (Saya memicunya dengan baris perintah sederhana
gpg -d myfile.gpg
)Cukup pilih "Secara otomatis membuka kunci kunci ini setiap kali saya masuk"
Sekarang kita belum benar-benar berbicara tentang kuda laut. Itu karena itu tidak sepenuhnya diperlukan. Semua ini telah dilakukan hanya dengan daemon gnome-keyring-reguler. Namun dengan kuda laut Anda dapat melihat dan mengelola semua kunci & pegas Anda. Dan jika Anda menggunakan otentikasi terpusat (LDAP), Anda harus menggunakannya ketika Anda mengubah kata sandi login Anda untuk juga mengubah kata sandi pada keyring "login" untuk mencocokkannya.
Kata sandi lainnya
Seperti disinggung sebelumnya, gnome-keyring-daemon juga dapat menyimpan kata sandi situs web. Terakhir kali saya memeriksa chrome mendukung ini, tetapi firefox tidak. Namun ada satu trik untuk membuatnya bekerja.
Secara default Anda akan memiliki 2 keyring, keyring "login", dan keyring "default". Keyring "default" adalah default (karenanya namanya). Tapi ini adalah keyring terpisah, jadi itu tidak secara otomatis tidak terkunci. Di kuda laut, jika Anda mengklik kanan keyring "login", ada opsi untuk "ditetapkan sebagai default". Pilih ini dan itu akan mulai digunakan untuk kata sandi. Saya pribadi hanya menghapus yang "default" dan menggunakan "login" untuk semuanya.
sumber
sudo apt-get remove gnupg-agent
dansudo apt-get install gnome-keyring seahorse
. Kemudian buat file/etc/X11/Xsession.d/999gnomekeyring
dengan konten berikut.eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK
(Kalau tidak, gnome-keyring bahkan tidak akan mulai di KDE.) Sekarang, ketika saya menjalankangpg -d myfile.gpg
, saya akan diminta kata sandi dan itu akan di-cache, tetapi saya tidak pernah diminta dengan dialog ini ./etc/X11/Xsession.d
. Itu seharusnya dilakukan di tumpukan PAM. Anda harus memilikisession optional pam_gnome_keyring.so auto_start
entri dalam satu atau lebih file di/etc/pam.d
. Sayangnya saya tidak menggunakan debian jadi saya tidak tahu yang mana. Jika itu tidak ada maka itu masalahnya./etc/X11/Xsession.d
,ps aux | grep gnome
menunjukkan bahwa gnome-keyring-daemon tidak memulai. (Namun demikian, menghapusnya.)/usr/share/doc/libpam-gnome-keyring/README.Debian
MengatakanIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
(baris baru dihapus oleh se komentar). Apakah itu, ditambahkan ke/etc/pam.d/kdm
, restart kdm. Tidak ada beban agen, tidak ada yang tersedia.kdm
dan memasukkannya ke dalam/etc/pam.d/kdm
, itu seharusnya dilakukan. Satu-satunya hal yang bisa saya sarankan jika Anda masih ingin mengejar rute ini adalah menggali log. Maaf untuk harapan yang salah, pikir ini akan menjadi solusi sederhana untuk Anda.Saya telah melakukan beberapa penyelidikan dan hasilnya mengejutkan bagi saya tetapi sederhana:
Ketika dipanggil dengan cara
gpg
ini tidak berkomunikasigpg-agent
sama sekali !gpg
mampu melakukan semua operasi ini sendiri.Tetapi jika
gpg-agent
bahkan tidak tahu bahwa sesuatu telah terjadi, maka sulit untuk mengetahui frasa sandi yang tidak diketahui sebelumnya.sumber
Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?
) Saya harap memasukkan kata sandi ke dalamgpg-agent
ataugpg-connect-agent
entah bagaimana mungkin.