gpg-agent отказывается от SSH-ключей с помощью ssh-add, сообщающего «агент отказался от операции»

12

Я использую openssh7.5p1 и gnupg 2.1.21 на Arch Linux (это версии по умолчанию, которые поставляются с Arch). Я хотел бы использовать gpg-agentв качестве агента SSH. Я положил следующее в моем ~/.gnupg/gpg-agent.conf:

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

Arch автоматически запускает gpg-agent из systemd, поэтому я установил

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

Когда я запускаю ssh-add -l, он не сообщает никаких идентификаторов и psсообщает о gpg-agent --supervisedпроцессе, как я ожидал.

К сожалению, когда я запускаю ssh-add, независимо от типа ключа, он не работает. Вот пример того, как я пробовал 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

Все остальные функции gpg работают правильно (шифрование / дешифрование / подпись). Кроме того, ключи, которые я генерирую, работают нормально, если я использую их напрямую с ssh, и они работают правильно, если я запускаю тот, ssh-agentчто идет с openssh.

В документации сказано, что ssh-addследует добавить ключи ~/.gnupg/sshcontrol, но, очевидно, ничего не происходит.

Мой вопрос: Что это самый простой способ для загрузки ключа , сгенерированного в OpenSSH ssh-keygenINTO gpg-agent, а может кто - то пожалуйста , вырезать и вставить терминальную сессию , показывая , как это работает?

user3188445
источник
Принятый ответ помог мне, спасибо за вопрос. Это случается время от времени со мной, есть какое-нибудь постоянное решение?
gf_

Ответы:

27

Ответ, по-видимому, должен был бежать:

echo UPDATESTARTUPTTY | gpg-connect-agent

Я понятия не имею, почему программа pinentry работала нормально для других целей, таких как расшифровка файлов, но не работала для ssh-add.

Хотя теперь это работает, он также создает копию закрытого ключа ssh, который не отображается под gpg -Kv, и, кроме того, похоже, не позволяет вам изменить фразу-пароль для вашего закрытого ключа (так как вы не можете редактировать ее с помощью --edit-key) , По сути, я довольно недоволен тем, что gpg-agentобеспечивает низкую видимость того, где копируются ваши секреты. Если вы ответите на этот вопрос, потому что надеетесь, gpg-agentчто он станет лучшей альтернативой ssh-agent, я бы посоветовал вам придерживаться ssh-agentэтого, а не пытаться найти ответ. Основная причина отдать предпочтение gpg-agent, если вам нужно для использования смарт-карт.

user3188445
источник
Где вы нашли этот ответ? Работает отлично!
CMCDragonkai
Спасибо за это, работал для меня. Вы регулярно этим занимаетесь? При каждой загрузке / логине? Любая идея относительно "правильного" исправления?
gf_
2

В моем случае проблема заключалась в использовании программы pinentry. Я использовал pinentry-emacs. Кажется, что он не обрабатывает окно ввода двойного текстового поля, которое ssh-addзапускается при использовании с gpg-agent.

Удаление pinentry-emacs и установка GTK pinentry решили проблему здесь.

user30747
источник
Это, наконец, решило мою проблему после нахождения нескольких источников, которые сказали мне обновить tty при запуске.
Уильям Розенблум