Как правильно запустить gpg-agent в Ubuntu 16.04
У меня есть 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, но безрезультатно.
Кто-нибудь может помочь мне понять, как запустить это автоматически при входе в систему, без необходимости выполнять "мой сценарий"?
2 ответа
Короткий ответ :
Выполнить с правами 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
Поместите скрипт в /etc/profile.d
, Убедитесь, что ваш исполняемый бит установлен (chmod +x
) и файл имеет .sh
расширение.