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

20156
intuited

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

24

4 ответа на вопрос

10
grawity

Вы можете использовать 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.)

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

конспект

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

Огромное спасибо за это, вырвал мои волосы, пытаясь избавиться от ошибки «CRITICAL **: Ошибка связи с gnome-keyring-daemon» при git pull. Ваши изменения в ~ / .profile и ~ / .bash_logout исправили это ... Все еще не сохраняю пароли, но я на шаг ближе! (Ubuntu 16.04.1 LTS) Chris B 8 лет назад 0
1
quack quixote

Во-первых, то, что вы действительно хотите сделать, это запускать 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
DrGecko

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

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

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

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

Похожие вопросы