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, а может кто - то пожалуйста , вырезать и вставить терминальную сессию , показывая , как это работает?


Принятый ответ помог мне, спасибо за вопрос. Это случается время от времени со мной, есть какое-нибудь постоянное решение?
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, если вам нужно для использования смарт-карт.


Где вы нашли этот ответ? Работает отлично!
CMCDragonkai

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


2

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

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


Это, наконец, решило мою проблему после нахождения нескольких источников, которые сказали мне обновить tty при запуске.
Уильям Розенблум
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.