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

2009
chriskvik

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

Затем я хотел использовать 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
Одна маленькая вещь, о которой я мог подумать, это убедиться, что все ваши агенты, связанные с gpg, имеют одинаковую версию. Я заметил, что вы запускаете `gpg2` в качестве команды, и поскольку killall gpg разрешает эту проблему, я наивно полагаю, что scdaemon или gpg-agent является старой версией. plttn 6 лет назад 0

2 ответа на вопрос

1
harrymc

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

Выполнить с правами 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-агента.

Пояснение:

По умолчанию 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 потенциально немного сложнее. Используя Xfce, можно удалить пакет libpam-gnome-keyring и убедиться, что Xfce не запускает службы GNOME (« Настройки» → «Сеанс и запуск» → «Дополнительно» → «Запустить службы GNOME» при запуске - снимите флажок, если отмечен галочкой).

Поиск проблемы

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

Источник: My Perfect GnuPG / SSH Agent Setup

0
NOLFXceptMe

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

Зачем? Что это делает именно? Pimp Juice IT 6 лет назад 0
https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh NOLFXceptMe 6 лет назад 0