Я использую это, чтобы получить его, но это зависит от запущенной сессии:
if [[ -z $DBUS_SESSION_BUS_ADDRESS ]]; then
pgrep "gnome-session" -u "$USER" | while read -r line; do
exp=$(cat /proc/$line/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=")
echo export "$exp" > ~/.exports.sh
break
done
if [[ -f ~/.exports.sh ]]; then
source ~/.exports.sh
fi
fi
Измените 'gnome' на любую другую сессию, которая у вас есть (она должна быть запущена).
По-видимому, ответ был следующим:
echo UPDATESTARTUPTTY | gpg-connect-agent
Я понятия не имею, почему программа pinentry отлично работала для других целей, таких как расшифровка файлов, но не работала для ssh-add
.
Хотя теперь это работает, он также создает копию закрытого ключа ssh, который не отображается в gpg -Kv
, и, кроме того, похоже, не позволяет вам изменить парольную фразу на вашем закрытый ключ (поскольку вы не можете редактировать его с помощью --edit-key
). По сути, я очень недоволен тем, как gpg-agent
обеспечивает низкую видимость того, куда копируются ваши секреты. Если вы задали этот вопрос, потому что надеялись, что gpg-agent
может быть лучшей альтернативой ssh-agent
, то я рекомендую вам придерживаться ssh-agent
. ] вместо того, чтобы попробовать мой ответ. Основная причина предпочесть gpg-agent
— если вам нужно использовать смарт-карту.
В моем случае проблема заключалась в используемой программе pinentry. Я использовал pinentry -emacs. Кажется, он не обрабатывает приглашение окна ввода двойного текстового поля, которое ssh-add
вызывает при использовании с агентом gpg -.
Удаление pinentry -emacs и установка GTK pinentry решили проблему здесь.