Intereting Posts
Как создать пользователя sudo, который не может удалить меня? Как создать sh-совместимую функцию bash Как я могу применить -v после того, как я уже выполнил команду? несоответствие версии протокола (клиент 8, сервер 6) при попытке обновления Ошибка конфигурации debian network wpa_supplicant Как выйти из системы, когда рабочий стол замерзает? Как изменить сортировку результата из grep -rc Linux не работает, начиная с системы dualboot после обновления Windows Установка uwsgi в Debian 6 (Squeeze) требует обновления libc6 и initscripts Невозможно установить частоту / канал Wi-Fi на Raspbian Это хорошая идея для фильтрации ввода перед запуском awk-действия? wget on Centos 7 Terminal как загрузить только текст без кода стиля сайта os-prober дает неправильный UUID для Arch Linux Как получить FreeBSD Grep для распознавания опции «-»? Пакетное переименование файлов изображений по возрасту плюс дата добавления и переменная в имя файла

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

Я использую openssh7.5p1 и gnupg 2.1.21 в arch linux (это версии по умолчанию, которые поставляются с arch). Я хотел бы использовать gpg-agent как агент ssh. Я ~/.gnupg/gpg-agent.conf следующее в свой ~/.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 , но, очевидно, ничего не происходит.

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

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

 echo UPDATESTARTUPTTY | gpg-connect-agent 

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

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