почему gpg-agent создает несколько сокетов

Aug 20 2020

при использовании gpgwith gpg-agentв моем ~/.gnupgкаталоге создаются следующие сокеты :

S.gpg-agent
S.gpg-agent.browser
S.gpg-agent.extra
S.gpg-agent.ssh

Полагаю, S.gpg-agentэто стандартная gpg-agentрозетка. Но для чего нужны остальные?

Я не использую gpg с ssh или gpg с браузером.

Где настроено, что они создаются автоматически?

Могу я их отключить?

Мне нужен только стандарт S.gpg-agent

Я использую gnupg 2.2.12Debian Buster.

Ответы

5 PatrickMevzek Aug 21 2020 at 18:09

Они gpg-agentмогут иметь несколько личностей и предоставлять разные услуги.

Например, вы можете перестать ssh-agentработать на вашем компьютере и использовать его gpg-agentв качестве замены ... при условии, что вы используете правильный сокет, S.gpg-agent.sshпотому что он должен реализовывать надлежащий протокол, sshкоторый ожидается обсудить. Почему это может быть полезно? Например, до недавнего времени sshне было возможности использовать ключи, хранящиеся в FIDO2 / U2F (например, Yubikeys), это было добавлено только в выпущенной не так давно версии 8.2, что значительно упрощает работу, как описано вhttps://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

До этого gpg-agentбудет использоваться, потому что gpgон поддерживает U2F, как смарт-карту. Это одна из канонических документов о том, как это сделать:https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

Теперь вернемся к gpg-agentего полному руководству по адресуhttps://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

Вы можете найти все варианты на https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options который можно поместить в файл конфигурации, обычно ~/.gnupg/gpg-agent.conf

Мы можем узнать, например:

  1. насчет .extraодного, мы можем узнать как его отключить, так и для чего он используется:
--extra-socket name

Дополнительный сокет создается по умолчанию, вы можете использовать эту опцию, чтобы изменить имя сокета. Чтобы запретить создание сокета, используйте в качестве имени «none» или «/ dev / null».

Также прослушивайте нативные соединения gpg-agent на данном сокете. Предполагаемое использование этого дополнительного сокета - настроить переадресацию сокета домена Unix с удаленного компьютера на этот сокет на локальном компьютере. Затем gpg, запущенный на удаленном компьютере, может подключиться к локальному gpg-агенту и использовать его закрытые ключи. Это позволяет расшифровывать или подписывать данные на удаленной машине, не раскрывая закрытые ключи удаленной машине.

  1. Для поддержки ssh .sshодин:

--enable-ssh-support

--enable-putty-support

Протокол OpenSSH Agent всегда включен, но gpg-agent устанавливает переменную SSH_AUTH_SOCK только в том случае, если установлен этот флаг.

В этом режиме работы агент реализует не только протокол gpg-agent, но также протокол агента, используемый OpenSSH (через отдельный сокет). Следовательно, должна быть возможность использовать gpg-agent как замену хорошо известному ssh-agent.

  1. Для сокета браузера и дополнительной информации вы можете использовать https://wiki.archlinux.org/index.php/GnuPG#gpg-agent что говорит:

gpg-agentв основном используется как демон для запроса и кеширования пароля для связки ключей. Это полезно, если GnuPG используется из внешней программы, такой как почтовый клиент. gnupg поставляется с пользовательскими сокетами systemd, которые включены по умолчанию. Эти гнезда gpg-agent.socket, gpg-agent-extra.socket, gpg-agent-browser.socket, gpg-agent-ssh.socketи dirmngr.socket.

Основной gpg-agent.socketиспользуется gpg для подключения к gpg-agentдемону.

Предполагаемое использование в gpg-agent-extra.socketлокальной системе - установка пересылки сокетов домена Unix из удаленной системы. Это позволяет использовать gpg в удаленной системе, не раскрывая закрытые ключи удаленной системе. Подробнее см. Gpg-agent (1).

Он gpg-agent-browser.socketпозволяет веб-браузерам получить доступ к демону gpg-agent.

gpg-agent-ssh.socketМожет использоваться SSH кэшировать SSH ключей , добавляемых программы SSH-надстройкой. См. #SSH агент для необходимой конфигурации.

dirmngr.socketНачинает обработку соединения с GnuPG с ключевыми серверами демона.

Так что в их наличии нет вреда, даже если вы их не используете. Если вы действительно хотите убедиться, что их там нет, вы можете попробовать поместить следующее в файл конфигурации gpg-agent:

extra-socket /dev/null
browser-socket /dev/null

Я не тестировал это, документация не говорит об browser-socketэтом, но этот старый вопрос говорит:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location