24

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

4 ответа4

10

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

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

auth     optional  pam_gnome_keyring.so
session  optional  pam_gnome_keyring.so auto_start

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

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

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

9

конспект

Необходимые работы по установке 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.

1

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

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

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .