використання gnome-keyring без сеансу x


14

Моє використання полягає в тому, що у мене є безголовий сервер, на якому здійснюється розробка програмного забезпечення. Я не включаю переадресацію X11 для SSH-підключень до неї, але не можу для віддалених місць з повільним з'єднанням.
Мені потрібне безпечне зберігання та кешування для моїх даних git, оскільки я регулярно працюю з 18-20 сховищами в дереві, тому я використовую git-poverljiv-gnome-keyring як git credency.helper, який спілкується за допомогою libgnome-keyring до gnome-keyring-демон. Щоб перевірити рішення, я встановив ПК з монітором, підтвердив, що брелок працював за замовчуванням у системі, а потім спробував це з SSH. Він працює з переадресацією X11, але без нього не працює.

Коли я підключений без переадресації X11, під час запиту введення запиту вводиться наступна помилка, і інструмент повертається до запиту в командному рядку:

** (process:18305): CRITICAL **: Error communicating with gnome-keyring-daemon

Дослідження показує, що основна проблема полягає в тому, що gnome-keyring-демон демонструє, що з'єднання використовуватимуть dbus для спілкування з ним. Dbus не запускається, якщо немає сеансу X11, тому немає загальної шини dbus для gnome-keyring-daemon та libgnome-keyring для підключення.

Я знайшов два рішення, які інші опублікували на цю проблему, хоча жодне не працює належним чином для мене.

  1. Отримайте порт DBUS з існуючого сеансу, який використовує X11
  2. Вручну запустити новий порт DBUS

Під час приєднання до існуючого порту DBUS базовою концепцією є пошук PID існуючого сеансу входу, скидання середовища для цього PID з profs, пошук у ньому DBUS_SESSION_BUS_ADDRESSта експорт його в поточне середовище. Оскільки це змінна, яка використовується для публікації шини DBUS, яка використовується всіма сесіями, встановлення цього повинно дозволяти всім сеансам спілкуватися на загальній шині DBUS, хоча це шина, пов'язана з іншим сеансом.
Джерела тут:
https://ubuntuforums.org/showthread.php?t=1059023

https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh- сесія /

код додано до мого .bashrc, що виконується під час входу в ssh:

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    local myPID=`pgrep "(.*session|fluxbox)" | head -n1`
    if [ -n "$myPID" ] ; then
        local myVar=`cat /proc/${myPID}/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
        if [ -n "$myVar" ] ; then
            export DBUS_SESSION_BUS_ADDRESS=$myVar
        fi
    fi
fi

Другий метод, вручну запускаючи DBUS для сеансу, передбачає використання dbus-launchдля створення нового сеансу та встановлення DBUS_SESSION_BUS_ADDRESSсередовища, а потім запуск gnome-keyring-daemon з усіма необхідними службами, щоб він побачив створену нами створену шину DBUS. а не порожня адреса автобуса. Це рішення може або не вимагає зміни gnome-keyring-daemon для запуску одного екземпляра на сеанс, а не одного екземпляра в системі, але це не ясно.
Джерела:
Починаючи з номера 8: https://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome- keyring-in-ssh-session

Як змінити рядок "Exec" служби dbus, не втрачаючи змін у разі оновлення
Код додано до мого .bashrc, який виконується під час входу в ssh:

# then DBUS wasn't started for this session and needs to be
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    # start a new dbus session and make sure the variables are exported (automatic output)
    eval `dbus-launch --sh-syntax`

    # make sure gnome-keyring-daemon is using all the necessary components (it may not be by default)
    # Capture the output, which is a series of variable setting commands, one on eachline, and
    # export them while setting them
    while read -r LINE
    do
        export $LINE
    done <<< $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
fi

Обидва рішення дають однаковий невдалий результат. Замість того, щоб негайно створити помилку, яка вказує на gnome-keyring-демон не можна спілкуватися, процес зависає на деякий час, а потім виробляє цей вихід:

Gkr-Message: secret service operation failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

** (process:31155): CRITICAL **: Error communicating with gnome-keyring-daemon

Мені не зрозуміло, як gnome-keyring-daemon взаємодіє з DBUS, але з другого набору помилок випливає, що це недоступно через щойно створену шину DBUS або перехресний процес на іншій шині DBUS. Дещо з того, що я знайшов, говорить про те, що gnome-keyring-daemon може знадобитися перед запуском DBUS, але незрозуміло, чи це стосується використання (libgnome-keyring) чи демона.

Як мені це зробити?


насправді сеанс dbus потрібно запускати перед тим, як користувальницькі ключі (демон) також при переадресації x11 ви використовуєте локальний брелок, а не віддалений ...
intika

Як показав перший підхід, я запустив сесію dbus ще до того, як запустився демон клавірів. І ви говорите, що коли я виконую команду, яка використовує демон-gnome-key-ring-демон у моїй віддаленій системі, він встановлює з'єднання через сокет $ DISPLAY назад до моєї вихідної системи для підключення до сесії dbus там? Це здається вкрай малоймовірним, але я не знаю достатньо про це, щоб повністю погодитися. Dbus не є графічним інструментом, це міжпроцесовий комунікаційний інструмент, який, як правило, багато використовується графічними програмами.
mtalexan

Тут просто спутбол, але ви намагалися використовувати xvfb, щоб "підробити" xsession. Це може спрацювати, якщо ви змусите його запустити (і закінчити ініціалізацію) та експортувати var DISPLAY таким чином, що dbus знає, що працює Xserver
TAAPSogeking

Відповіді:


1

Це може бути дурною відповіддю ... але, gnome-keyring потребує доступу до сесії X11, принаймні, щоб запропонувати ваш головний ключ. Отже, просто неможливо змусити його запустити, за дизайном ... чи не так?

EDIT: Може бути , НЕ що неможливо. Дивіться цю публікацію , схожа на вашу проблему:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.