Menggunakan gpg dari lingkungan berbasis konsol seperti sesi ssh gagal karena dialog pinentry GTK tidak dapat ditampilkan dalam sesi SSH.
Saya mencoba unset DISPLAY
tetapi tidak membantu. Opsi baris perintah GPG tidak termasuk sakelar untuk memaksa pinentry ke mode konsol.
Versi GPG yang lebih lama menawarkan prompt berbasis teks yang berfungsi dengan baik dalam sesi SSH tetapi setelah peningkatannya gagal.
Ada --textmode
saklar baris perintah tetapi ternyata, ia melakukan sesuatu yang lain.
Apa cara yang tepat dan bersih untuk mendapatkan entri pin teks biasa untuk sesi jarak jauh?
DISPLAY="" gpg2 ...
membantu saya, saya juga menginstal pinentry-curses + pinentry-tty sebelumnya, tidak yakin apakah mereka benar-benar diperlukanJawaban:
Untuk mengubah pinentry secara permanen, tambahkan yang berikut ke Anda
~/.gnupg/gpg-agent.conf
:(Dalam versi yang lebih lama yang tidak memiliki pinentry-tty, gunakan kutukan pinentry untuk jendela dialog 'terminal penuh'.)
Beri tahu agen GPG untuk memuat ulang konfigurasi:
sumber
gpg-agent
harus dengan sendirinya mendeteksi ada atau tidaknya$DISPLAY
dan memilih pinentry yang sesuai ...DISPLAY
definisi tidak selalu berarti saya dapat atau ingin menggunakannya, misalnya, ketika terhubung melalui SSH.su
tidak mengubah kepemilikan TTY Anda, jadi Anda harus secara manualchown
. Lihat artikel ini .ls /usr/bin | grep pinentry
. Saya melihatpinentry
,pinentry-curses
,pinentry-emacs
,pinentry-gnome3
,pinentry-gtk2
,pinentry-qt
danpinentry-tty
. Dengan cara ini Anda dapat memilih yang cocok untuk Anda, jika Anda tidak memiliki$DISPLAY
masalah.Saya baru saja mengalami masalah ini di Ubuntu 16.04.3 ketika mencoba menghasilkan / menginstal kunci pribadi menggunakan gpg2 (2.1.11) pada akun sistem tanpa kata sandi, dan pada akun pengguna lebih dari ssh. Tidak ada yang berhasil memberi:
Saya kemudian menemukan ini yang bekerja untuk saya, jadi singkatnya:
sumber
Di kotak debian:
(dan atur ke pinentry-tty)
sumber
Di Ubuntu 18.04, dengan instalasi default gpg 2.2.4, saya punya
Saya dapat melakukan hal berikut untuk mendapatkan entri PIN berbasis teks:
sumber
Jika Anda tidak memilikinya, instal
pinentry-curses
dengan yum atau apt-get.Lalu lari:
sudo update-alternatives --config pinentry
Dan pilih pinentry-curses dari daftar.
sumber
Saya akan menyalin jawaban saya dari sini ...
Melihat
man pinentry-gnome3
, saya melihat ini:Sayangnya, fallback mode teks ini tidak berfungsi untuk saya. Tampaknya orang lain memiliki masalah yang sama . Namun, komentar ini memacu saya untuk mencoba program pin-entry GUI yang berbeda: . Anda dapat beralih seperti ini:
pinentry-gtk2
Setelah saya beralih, itu bekerja dengan baik untuk saya! Di terminal di desktop, itu akan menggunakan entri kata sandi GUI, tetapi ketika saya ssh ke mesin saya, itu akan menggunakan entri kata sandi mode teks.
sumber
Untuk mencegah popup pinentry, Anda dapat melakukannya
ssh localhost
. Opsional memaksa X11 dinonaktifkan,-x Disables X11 forwarding.
Lihat contoh lengkap di bawah ini.sumber
-x Disables X11 forwarding.
harus mencegah penerusan X11. Jawaban diperbarui.Saya menemukan "contoh lengkap" dalam jawaban PvdL agak membingungkan, inilah yang saya lakukan:
sumber
Jika Anda melakukannya
export GPG_TTY=$(tty)
danunset DISPLAY
itu akan memberikan kotak dialog TLI yang meminta frasa sandi. Mengetik frasa sandi yang benar membuatnya mendekripsi.Jika Anda TIDAK melakukan ekspor GPG_TTY di atas dan menghapus DISPLAY, itu diharapkan menggunakan X Windows. Jika Anda meluncurkan sesi Anda (seperti Putty) dari sistem MS-Windows dengan penerusan X11 diaktifkan, ia ingin mengirim dialog X-Window ke sistem MS Windows Anda. Anda dapat menggunakan emulator X seperti Melebihi atau Cygwin / X pada Windows untuk memungkinkan prompt X-Window untuk frasa sandi muncul di kotak MS-Windows Anda.
Namun, Anda dapat menghilangkan kebutuhan untuk mengatur GPG_TTY dan menghapus DISPLAY dan mendapatkan TLI atau GUI dengan menjalankan baris perintah dengan
--batch
opsi dan memasukkan frasa sandi dengan--passphrase
opsi:Semua 3 metode bekerja untuk saya hari ini di RHEL6 menjalankan gnupg2.
sumber
export GPG_TTY=$(tty)
sudah cukup. Sudahkah Anda mencobanya? Apakah Anda memiliki referensi yang mengatakan bahwaunset DISPLAY
ini juga diperlukan? PS Orang tidak suka meletakkan frasa sandi di baris perintah.