Как правильно запустить gpg-agent в Ubuntu 16.04

Как правильно запустить gpg-agent в Ubuntu 16.04

У меня есть Yubikey4, загруженный моим gpg-ключом, который действует как смарт-карта. Я могу это сделать gpg2 card-status, и он дает мне всю эту штуку, показывая все мои подключи, и все в порядке.

Затем я хотел использовать gpg-agent для ssh-подключения к удаленным хостам с помощью моего ключа gpg. Я добавил следующее в свой~/.gnupg/gpg-agent.conf

enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60

Я также установил SSH_AUTH_SOCKв своем .bashrc следующее:

export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh

Если я затем перезагружу свой компьютер, ключ будет добавлен и виден сssh-add -l

4096 SHA256....... cardno: ..... (RSA)

Но любые попытки подключиться по ssh к удаленному серверу просто зависают, ssh -vvvсообщая мне, что машина пытается подписать и отправить ключ, но агент отклоняет операцию.

Если я затем запущу скрипт, созданный мной с использованием различных источников, то все заработает.

   killall gpg
   export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses 

Я попытался реализовать это с помощью bashrc, запустив его с помощью моего deskopt-manager и пользовательской задачи systemd, но безуспешно.

Может ли кто-нибудь помочь мне разобраться, как запустить это автоматически при входе в систему, без необходимости выполнять «мой скрипт»?

решение1

Короткий ответ :

Выполнить как root:

$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
    ... comment out "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring

Выйдите из сеанса рабочего стола и войдите снова, затем проверьте, что $SSH_AUTH_SOCK указывает на ваш gpg-agent.

Объяснение :

По умолчанию gpg-agent не включает свой SSH-агент. Это делается либо передачей --enable-ssh-supportв командной строке, либо добавлением строки в файл конфигурации, как указано выше.

Во-вторых, проблема других агентов SSH. Агент OpenSSH запускается по умолчанию, настраивается /etc/X11/Xsession.d/90x11-common_ssh-agentиз пакета x11-common. Если запущен GNOME, агент GNOME Keyring также запущен. Оба они будут мешать нашему агенту GnuPG.

Отключение агента OpenSSH осуществляется путем редактирования, /etc/X11/Xsession.optionsкак указано выше.

Отключение агента GNOME Keyring потенциально немного сложнее. Используя Xfce, можно удалить пакет libpam-gnome-keyring и убедиться, что Xfce не запускает службы GNOME (Параметры → Сеанс и запуск → Дополнительно → Запускать службы GNOME при запуске– снимите галочку, если она отмечена).

Поиск неисправностей

Если после всего этого SSH_AUTH_SOCK все еще не указывает на ваш gpg-agent, у вас может быть другой агент, который все еще мешает вашему агенту GnuPG. Переменная SSH_AGENT_PID должна содержать PID процесса агента, что поможет точно определить этого агента.

Источник : Моя идеальная настройка GnuPG / SSH Agent

решение2

Поместите скрипт в /etc/profile.d. Убедитесь, что установлен исполняемый бит ( chmod +x) и файл имеет .shрасширение.

Связанный контент