використання gnome-keyring-демон без X


25

Мені цікаво, чи можна використовувати gnome-keyring-daemon без X. Зазвичай він представляє графічний підказку для отримання пароля для keyring; чи є шлях до цього? Я хотів би мати можливість використовувати один з 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 "мій слово" | gnome-keyring-daemon --login

(Ви все ще потребуєте запуску демона - або запускається через PAM, або з --daemonize.)


Другий випадок - це в моєму випадку. Цей (недокументований?) --loginВаріант є досить корисним, хоча я впевнений, що не хотів би зберігати свій незахищений пароль у скрипті або ставити його в командному рядку. читання в нетренованому режимі зсередини сценарію (без мови оболонки), який потім передає цей вхід до породженого демона, мабуть, буде хорошим способом зробити це. Я повинен був запустити цей процес лише один раз під час завантаження, тому має сенс ввести пароль; Мені просто потрібно мати можливість це робити в командному рядку, а не через діалоговому вікні GTK.
інтуїтив

1
Помилка .. неважливо, це документально підтверджено gnome-keyring-daemon --help. Я щойно перевірив manpage та / usr / share / doc.
інтуїтив

2
@intuited: Ну, тоді зроби щось таке: read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --loginу сценарії.
grawity

Насправді так, це спрацювало б; Я забував, що відлуння було вбудованим.
інтуїтив

У відповідь на старий коментар від @intuited: gnome-keyring-daemon --helpдає мені хороший огляд, але man gnome-keyring-daemonмістить лише короткий опис самої програми, але без аргументів.
гонорар

10

Конспект

Необхідні завдання з установки svn з підтримкою keyring та встановлення програми 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 потребує автентифікації. Очевидно, що зберігання текстового пароля було вичерпане, тому з невеликим дослідженням я почав використовувати 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 -сесія

Тут важливо використовувати Collabnet keyring_tool для створення брелока без клієнта gnome-keyring-менеджера та встановлення запуску dbus самостійно, а не дозволяти SVN керувати налаштуванням. SVN використовує DBUS для підключення до gnome-keyring-демон і впливати на загальну аутентифікацію. Вручну запускаючи і зриваючи сеанс dbus за допомогою -sh-синтаксису, ви уникаєте спроб підключитися до клієнта X при запуску dbus. Якщо ви просто запустите gnome-keyring-daemon і спробуєте використовувати SVN, він все одно запропонує вам ввести пароль, але потім запропонує вам і ваші дані SVN. Dbus не вдасться, коли SVN спробує його запустити через відсутність клієнта X; мабуть, SVN не використовує жодних спеціальних прапорів при запуску dbus.


Дякую вам за це, витягнули моє волосся, намагаючись позбутися "КРИТИЧНОГО **: Помилка спілкування з помилкою gnome-keyring-daemon" під час потягування git. Ваші зміни до ~ / .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 , FAQ пропонує: (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 у x-пересиланому сеансі SSH. Це був обліковий запис, який використовував аутентифікацію publickey (без пароля).

Я використовував dbus-run-session, щоб досягти цього після підключення до сеансу ssh:

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

сподіваємось, ця інформація комусь корисна!


Це допомогло на крок ближче до запуску mysql-workbench всередині контейнера докера та експорту дисплея до мого mac-хоста. Коли я намагаюся додати пароль до нового з'єднання, він показує мені підказку, але після введення pwd я отримую: "Не вдалося виконати програму org.freedesktop.secrets: Операція заборонена". Будь-які підказки?
Рікардо Песіотта
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.