Решение: Отключить gnome-keyring с помощью dpkg-divert

Решение: Отключить gnome-keyring с помощью dpkg-divert

Я не хочу, чтобы gnome-keyring мешал моим коммитам git, отчасти потому, что он блокирует весь экран, запрашивая пароль, даже в KDE (хотя я теперь перешел на GNOME). Хотя я и ценю удобство не вводить пароль SSH каждый раз, необходимость переходить из окна в окно лично отменяет это. Это просто удобно :/

Я пробовал git config --global --unset credential.helperи git config --system --unset credential.helper, но они, похоже, не дали никакого эффекта. Поскольку я сейчас использую GNOME, я бы предпочел не удалять gnome-keyring. Есть ли другие варианты, которые я могу сделать? Сейчас я на Ubuntu 14.10, проделав это и с Kubuntu, и с Ubuntu GNOME. Спасибо.

ОБНОВЛЕНИЕ 17 ноября 2014 г.

Это, по-видимому, влияет на все SSH. Я пробовал делать

sudo rm /etc/xdg/autostart/gnome-keyring-ssh.desktop

но это не сработало. Я МОГУ сделать

gnome-keyring-daemon --replace -c pkcs11,secrets,gpg

один раз за сеанс, но я бы хотел сохранить это навсегда. Все еще ищу...

решение1

Просто скопируйте соответствующий .desktopфайл из /etc/xdg/autostartи ~/.config/autostartдобавьте Hidden=trueв него:

(cat /etc/xdg/autostart/gnome-keyring-ssh.desktop; echo Hidden=true) > ~/.config/autostart/gnome-keyring-ssh.desktop

затемперезагрузить гном-shell(нажмите Alt+ F2, затем введите rи нажмите Enter).

Это единственноеудобное решениеэто сработало для меня (т.е. не пришлось делать мягкую ссылку.рабочий столфайл в/dev/нульили chmod 0) gnome-keyring-daemon. На самом деле, мягкая ссылка на/dev/нульперестало работать у меня в GNOME 3.16.

Заслуга в этом принадлежитнус.

решение2

Я не могу говорить за релизы Ubuntu, кроме Trusty, — а GNOME — это такая постоянно меняющаяся цель, что можно гарантировать, что каждый релиз будет отличаться, — но вот что, по моему мнению, работает наиболее надежно:

mkdir -p ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/
echo "X-GNOME-Autostart-enabled=false" >> ~/.config/autostart/gnome-keyring-ssh.desktop

Запуск сеанса в Unity, по крайней мере, и, вполне вероятно, в GNOME3 тоже, происходит странно: он запускает скрипты Upstart из , /usr/share/upstart/sessions/а затем запускает все записи автозапуска рабочего стола в /etc/xdg/autostartи gnome-keyring, а также многие другие вещи из обоих (и, вероятно, он запускает что-то /usr/share/upstart/xdg/autostartи в ; я это не проверял).

Запись upstart gnome-keyring-sshпроверит эту X-GNOME-Autostart-enabled=falseстроку в системной или локальной записи .desktop пользователя и отступит, затем будет запущен стандартный сеанс. Затем запустится ssh-agentобщесистемный сеанс, если только у вас нет соответствующей записи в локальной записи автозапуска пользователя, в этом случае он будет запущен вместо этого.gnome-keyring-ssh/etc/xdg/autostart

Раньше было достаточно просто иметь эту enable=falseстроку в локальном автозапуске, но в последнее время (например, с мая 2016 года, более двух лет в период LTS Trusty) это поведение изменилось, и вам нужно что-то похожее на полную запись. Я все еще изучаю точный набор необходимых ключей и ответственное за это обновление пакета.

Почему разработчики GNOME просто не использовали прокси-сервер для работы с ключевым агентом OpenSSH?кто-нибудь догадается. Вы могли бы предложить им вести себя более разумно.в этой записи Bugzilla.

решение3

Хороший и понятный способ отключить только компонент ssh-agent gnome-kerying:

gconftool-2 --set --type bool /apps/gnome-keyring/daemon-components/ssh false

решение4

Решение: Отключить gnome-keyring с помощью dpkg-divert

sudo dpkg-divert --local --rename /usr/bin/gnome-keyring-daemon 

В следующий раз, когда вы войдете в систему, его уже не будет. Этой одной строки вам достаточно, но читайте дальше, чтобы получить объяснения и предупреждения.

Краткое объяснение

Это решение переименовывает программу в gnome-keyring-daemon.distrib, поэтому ее невозможно найти.

При входе в систему вместо того, чтобы gnome-keyring пытался справиться с интеграцией ssh, запросы пароля будут напрямую направляться в ssh-agent. Вы можете разблокировать свой ключ ssh для коммитов git, используя обычную ssh-addкоманду.

Предостережения и раскаяние

Gnome Keyring глубокопереплетенныйс Gnome Desktop. Без него некоторые вещи могут перестать работать, пока не будет установлена ​​замена.

Чтобы повторно включить Gnome Keyring

sudo dpkg-divert --remove --rename /usr/bin/gnome-keyring-daemon 

Вы можете использовать Gnome Keyring и не знать об этом

Многие приложения, которые могут сохранять ваши пароли, такие как Chromium и Evolution, шифруют их с помощью главного ключа, хранящегося в Gnome Keyring. Отключение Gnome Keyring предотвращает доступ ко всем этим сохраненным паролям. Перед отключением Gnome Keyring будет хорошей идеей сделать резервную копию сохраненных паролей.

Резервное копирование связки ключей Gnome

Вы можете сделать резервную копию своих ключей, скопировав файлы в ~/.local/share/keyrings/. Секреты зашифрованы, поэтому, в зависимости от вашей позиции безопасности, вы можете захотеть сделать их резервную копию в виде простого текста. Для этого используйте программу "Passwords and Keys" (она же "Seahorse"), чтобы временно установить пустой пароль для Login Keyring. (Совет: Seahorse скрывает опцию смены пароля в контекстном меню правой кнопки мыши.)

Предупреждение: пароли могут храниться в открытом виде.

Chromium и Google Chrome используют демон под названием "Secret Service", чтобы получить ключ шифрования для сохраненных паролей. Если Secret Service отсутствует, что произойдет, как только вы отключите Gnome Keyring, они сохранят ваши паролинезашифрованный. В отличие от Firefox, браузеры на базе Chromium в настоящее время не предоставляют возможности вручную задать основной пароль.

Интеграция секретной службы Freedesktop.org

Gnome Keyring — это только одна из программ, которая может выступать в качестве демона Secret Service. Чтобы гарантировать шифрование сохраненных паролей в Chromium и Evolution, вы можете установить keepassxc и включить Secret Service в настройках.

Дальнейшее объяснение

Почему бы просто не использовать chmodили mv?

Изменения через chmod или mv будут отменены при обновлении системы. При использовании dpkg это решение сохранится при любых изменениях, даже при обновлении до новой версии Ubuntu.

Есть ли менее радикальный способ?

На момент написания статьи, похоже, невозможно сказать Gnome Keyring продолжать предоставлять Secret Service Integration и прекратить возиться с ssh-agent. Для многих людей это было бы идеальным вариантом, поэтому, надеюсь, Gnome добавит эту опцию в будущем.

Почему другие методы не работают

За эти годы было предложено много разных решений, которые в следующем релизе оказались сломанными. Вот краткое изложение того, почему нет.

Настройка связки ключей Gnome

Идеальным решением было бы настроить Gnome Keyring так, чтобы он делал все правильно. На самом деле есть опция командной строки, --componentsкоторая почти работает. Она позволяет указать, какие компоненты инициализировать:

gnome-keyring-daemon --components secrets,ssh,pkcs11

Можно было бы исключить ssh из списка, и, теоретически, это не испортило бы аутентификацию ssh. К сожалению, это не мой опыт. Возможно, проблема была в том, что gnome-keyring запускался из нескольких мест (см. ниже), но вкратце: нет способа сказать Gnome Keyringникогдазагрузить компонент ssh, только чтобы сказатьне сейчас.

apt удалить gnome-keyring

Очевидное решение удаления пакета gnome-keyring также удаляет все пакеты, которые зависят от него, включая gnome-core. Хотя есть способы обойти это, легко случайно удалить всю среду рабочего стола GNOME.

Множественные векторы атаки

Одна из причин, по которой gnome-keyring-daemon так сложно уничтожить, заключается в том, что он запускается (как минимум) четырьмя различными способами при входе в систему, каждый из которых должен быть отключен определенным образом.

  1. PAM (подключаемые модули аутентификации) в /etc/pam.d/gdm-password
  2. служба пользователя systemd и сокет
  3. сеанс пользователя systemd.slice в /usr/share/dbus-1/services/
  4. Автозапуск XDG в /etc/xdg/autostart/gnome-keyring-*.desktop

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