gpg-agent menolak kunci SSH dengan ssh-add reporting "agent reject operation"

12

Saya menggunakan openssh7.5p1 dan gnupg 2.1.21 di arch linux (ini adalah versi default yang datang dengan arch). Saya ingin menggunakan gpg-agentsebagai agen ssh. Saya memasukkan yang berikut ini di ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-qt
enable-ssh-support

Arch secara otomatis memulai gpg-agent dari systemd, jadi saya atur

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"

Ketika saya menjalankan ssh-add -l, itu tidak melaporkan identitas dan psmelaporkan suatu gpg-agent --supervisedproses seperti yang saya harapkan.

Sayangnya, ketika saya berlari ssh-add, apa pun jenis kuncinya, itu tidak berhasil. Berikut adalah contoh bagaimana saya mencoba dsa:

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation

Semua fungsi gpg lainnya berfungsi dengan baik (mengenkripsi / mendekripsi / menandatangani). Juga, kunci yang saya hasilkan berfungsi dengan baik jika saya menggunakannya secara langsung dengan ssh, dan mereka berfungsi dengan baik jika saya menjalankan ssh-agentyang datang dengan openssh.

Dokumentasi mengatakan bahwa ssh-addharus menambahkan kunci ~/.gnupg/sshcontrol, tetapi jelas tidak ada yang terjadi.

Pertanyaan saya: Apa cara termudah untuk memuat kunci yang dihasilkan oleh openssh's ssh-keygeninto gpg-agent, dan dapatkah seseorang memotong dan menempel sesi terminal yang menunjukkan cara kerjanya?

pengguna3188445
sumber
Jawaban yang diterima membantu saya, terima kasih telah mengajukan pertanyaan ini. Ini sering terjadi pada saya, apakah ada solusi permanen?
gf_

Jawaban:

27

Jawabannya tampaknya berjalan:

echo UPDATESTARTUPTTY | gpg-connect-agent

Saya tidak tahu mengapa program pinentry bekerja dengan baik untuk keperluan lain seperti mendekripsi file, tetapi tidak berhasil ssh-add.

Meskipun ini sekarang berfungsi, ia juga membuat salinan kunci privat ssh yang tidak muncul di bawah gpg -Kv, dan lebih lanjut sepertinya tidak memungkinkan Anda untuk mengubah frasa sandi pada kunci pribadi Anda (karena Anda tidak dapat mengeditnya dengan --edit-key) . Pada dasarnya saya sangat tidak senang dengan cara gpg-agentmemberikan visibilitas rendah ke tempat rahasia Anda sedang disalin. Jika Anda menjawab pertanyaan ini karena Anda berharap gpg-agentbisa menjadi alternatif yang lebih baik ssh-agent, maka saya mendorong Anda untuk tetap bertahan ssh-agentdaripada mencoba jawaban saya. Alasan utama untuk memilih gpg-agentadalah jika Anda perlu menggunakan kartu pintar.

pengguna3188445
sumber
Di mana Anda menemukan jawaban ini? Ini sangat bagus!
CMCDragonkai
Terima kasih untuk ini, berhasil untuk saya. Apakah Anda menjalankan ini secara teratur? Di setiap boot / login? Adakah gagasan tentang perbaikan yang "layak"?
gf_
Lihat manual opsi agen gpg
Ray Oei
2

Dalam kasus saya, masalahnya adalah program pinentry yang digunakan. Saya menggunakan pinentry-emacs. Tampaknya ia tidak menangani jendela entri entri bidang teks ganda yang ssh-adddipicu saat digunakan dengan gpg-agent.

Menghapus pinentry-emacs dan menginstal pinentry GTK memecahkan masalah di sini.

pengguna30747
sumber
Ini akhirnya menyelesaikan masalah saya setelah menemukan banyak sumber yang mengatakan kepada saya untuk memperbarui tty startup.
William Rosenbloom