использование gnome-keyring-daemon без X

25

Мне интересно, возможно ли использовать gnome-keyring-daemon без X. Обычно он представляет графическое приглашение для получения пароля для связки ключей; Это можно обойти? Я хотел бы иметь возможность использовать Ubuntu один без необходимости запуска графического сеанса и введите свой пароль.

созерцаемое
источник

Ответы:

11

Вы можете использовать pam_gnome_keyring.soдля запуска и разблокировки демона. GDM уже делает это; для login, вы должны настроить его вручную.

Добавьте эти строки в /etc/pam.d/login:

auth необязательный pam_gnome_keyring.so
необязательный сеанс pam_gnome_keyring.so auto_start

Если вы входите без пароля (SSH с Kerberos или открытыми ключами), это может сработать: (я не проверял)

echo -n "mypassword" | gnome-keyring-daemon --login

(Вам все еще нужен демон, запущенный через PAM или с помощью --daemonize.)

grawity
источник
Второй случай в моем случае. Этот (недокументированный?) --loginВариант довольно полезен, хотя я уверен, что не захочу хранить свой хэшированный пароль в сценарии или помещать его в командную строку. чтение в неподходящем режиме из скрипта (не на языке оболочки), который затем передает этот ввод порожденному демону, вероятно, будет хорошим способом сделать это. Мне нужно только запустить этот процесс один раз за загрузку, поэтому имеет смысл ввести пароль; Мне просто нужно иметь возможность сделать это в командной строке, а не через диалог GTK.
интуитивно
1
эээ .. не важно, это задокументировано gnome-keyring-daemon --help. Я только что проверил man-страницу и / usr / share / doc.
интуитивно
2
@intuited: Ну, тогда сделайте что-то вроде этого: read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --loginв сценарии.
благодарность
На самом деле да, это будет работать; Я забыл, что эхо было встроенным.
интуитивно
В ответ на старый комментарий от @intuited: gnome-keyring-daemon --helpдает хороший обзор, но man gnome-keyring-daemonсодержит краткое описание самой программы, но без аргументов.
feeela
10

конспект

Необходимые задания по установке svn с поддержкой ключей и установке приложения Collabnet keyring_tool уже выполнены для наших серверов Linux.

1) Настройте клиент SVN для использования связки ключей:

1.1) Редактирование ~ / .subversion / config

[auth]
password-stores = gnome-keyring

1.2) Редактировать ~ / .subversion / серверы

[global]
store-passwords = yes
store-plaintext-passwords = no

2) Создайте брелок для вашего пароля. Вам будет предложено создать новый пароль для разблокировки набора ключей; это может быть что угодно:

keyring_tool --create=svn

3) Установите новый набор ключей по умолчанию:

keyring_tool --setdef=svn

4) В .bash_profile или .bash_login (при условии, что вы используете bash в качестве терминала)

    if [ -e /usr/bin/gnome-keyring-daemon ]; then
      if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
        # Create dbus transport link for SVN to talk to the keyring.
        eval `dbus-launch --sh-syntax`

        # Start the keyring daemon.
        # The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
        # env values echoed out at startup.
        export `/usr/bin/gnome-keyring-daemon`
      fi
    fi

5) В .bash_logout

    # Kill the message bus established for SVN / Keyring communication
    if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
      kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
    fi

    # Kill the Gnome Keyring Daemon prior to logout.
    if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
      kill $GNOME_KEYRING_PID > /dev/null 2>&1
    fi

Задний план

Я столкнулся с подобной проблемой, пытаясь создать простой способ обеспечить доступ авторизованного пользователя к определенным репозиториям SVN на работе. По сути, нам приходилось принудительно проверять учетные данные каждый раз, когда пользователь обращается к серверу, поэтому даже для команды svn update потребуется аутентификация. Ясно, что хранилище паролей в виде простого текста отсутствовало, поэтому после небольшого исследования я наткнулся на использование gnome-keyring как способа преследования нашей пользовательской базы постоянными запросами аутентификации, в то же время не допуская посторонних пользователей в хранилища, которые они не должны иметь для просмотра.

Большая часть нашей повседневной работы выполняется через туннели ssh до сервера RedHat без поддержки X, поэтому мне пришлось искать способ обойти поддержку X11. После некоторых поисков мне удалось найти способ обойти это здесь:

Исходный материал

http://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring-in-an-ssh -session

Они используют ключ Collabnet keyring_tool для создания связки ключей без клиента gnome-keyring-manager и установки dbus-launch самостоятельно, а не позволяют SVN обрабатывать настройку. SVN использует DBUS для соединения с демоном gnome-keyring-daemon и влияет на общую аутентификацию. Запуская и прерывая сеанс dbus вручную с -sh-синтаксисом, вы избегаете попытки подключиться к X-клиенту при запуске dbus. Если вы просто запустите gnome-keyring-daemon и попытаетесь использовать SVN, он все равно запросит у вас пароль для связки ключей, но затем также запросит учетные данные SVN. Dbus потерпит неудачу, когда SVN попытается запустить его из-за отсутствия X-клиента; по-видимому, SVN не использует никаких специальных флагов при запуске dbus.

Стивен Грей
источник
Огромное спасибо за это, вырвал мои волосы, пытаясь избавиться от ошибки «КРИТИЧЕСКИЙ **: Ошибка связи с gnome-keyring-daemon» при git pull. Ваши изменения в ~ / .profile и ~ / .bash_logout исправили это ... Все еще не сохраняю пароли, но я на шаг ближе! (Ubuntu 16.04.1 LTS)
Крис Б.
1

Во-первых, то, что вы действительно хотите сделать, это запускать Ubuntu One строго из командной строки. Ознакомьтесь с часто задаваемыми вопросами по Ubuntu One . В FAQ говорится, что в настоящее время это невозможно, но есть некоторые инструменты CLI, такие как u1sdtool и u1sync . Также на Launchpad есть множество часто задаваемых вопросов по Ubuntu One; содержание может быть таким же, как и предыдущая ссылка на wiki.ubuntu.com.

Что касается вашего фактического вопроса о gnome-keyring-daemon , часто задаваемые вопросы предлагают (1) установить автоматический вход в систему и (2) синхронизировать ваш пароль набора ключей с вашим паролем для входа. Это (в теории) избежать приглашение на ввод пароля, но это будет требовать по крайней мере , основной X-сессии , которая будет запущена.

На Launchpad есть ошибка / список пожеланий Ubuntu One, который позволяет упростить работу с безголовыми системами. Очевидно, что сборка из исходного кода рекомендуется для облегченной установки (чтобы избежать необходимости во всех библиотеках графического интерфейса и т. Д.). Этот комментарий старый, но особенно интересный:

Проблема в том, что мы используем python-gnomekeyring. Чтобы мы могли поддерживать безголовый, нам нужно переключиться на python-keyring и обрабатывать хранение токенов где-то, кроме gnome-keyring, на безголовых дисплеях. Однако с упаковкой Karmic этого не произойдет, поскольку она заморожена, и это изменение не будет приемлемо для SRU.

Для Lucid у нас должна быть более надежная служба аутентификации, которая должна позволить нам лучше поддерживать отображение без монитора.

Я не могу сказать, была ли эта «более надежная служба аутентификации» фактически введена для Lucid; Судя по зависимостям пакетов, кажется, что клиент Ubuntu One все еще зависит от python-gnomekeyring.

шарлатан
источник
0

У меня был некоторый успех в получении mysql-workbench для работы с gnome-keyring в сеансе SSH с переадресацией x. Это была учетная запись, которая использовала аутентификацию с помощью публичного ключа (без пароля).

Я использовал dbus-run-session для достижения этого, когда подключился к ssh-сессии:

dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'

надеюсь, эта информация кому-то пригодится!

DrGecko
источник
Это помогло на шаг приблизиться к запуску mysql-workbench внутри контейнера Docker и экспорту дисплея на мой компьютер Mac. Когда я пытаюсь добавить пароль к новому соединению, он показывает мне приглашение, но после ввода pwd я получаю: «Не удалось выполнить программу org.freedesktop.secrets: Операция не разрешена». Есть какие-нибудь подсказки?
Рикардо Пескиотта