![Решение: Отключить gnome-keyring с помощью dpkg-divert](https://rvso.com/image/1048326/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5%3A%20%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20gnome-keyring%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20dpkg-divert.png)
Я не хочу, чтобы 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 так сложно уничтожить, заключается в том, что он запускается (как минимум) четырьмя различными способами при входе в систему, каждый из которых должен быть отключен определенным образом.
- PAM (подключаемые модули аутентификации) в /etc/pam.d/gdm-password
- служба пользователя systemd и сокет
- сеанс пользователя systemd.slice в /usr/share/dbus-1/services/
- Автозапуск XDG в /etc/xdg/autostart/gnome-keyring-*.desktop