Мне интересно, можно ли использовать gnome-keyring-daemon без X. Обычно он представляет графическое приглашение для получения пароля для набора ключей; Это можно обойти? Я хотел бы иметь возможность использовать Ubuntu один без необходимости запуска графического сеанса и введите свой пароль.
4 ответа
Вы можете использовать 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
.)
конспект
Необходимые работы по установке 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. После некоторых поисков мне удалось найти способ обойти это здесь:
Исходный материал
Здесь они используют ключ 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.
Во-первых, то, что вы действительно хотите сделать, это запускать 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.
У меня был некоторый успех в получении mysql-workbench для работы с gnome-keyring в сеансе SSH с переадресацией x. Это была учетная запись, которая использовала аутентификацию publickey (без пароля).
Я использовал dbus-run-session для достижения этого, когда подключился к ssh-сессии:
dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'
надеюсь, эта информация кому-то пригодится!