x oturumu olmadan gnome-keyring kullanımı


14

Kullanım durumum, yazılım geliştirmenin yapıldığı başsız bir sunucum olması. Genellikle SS11 bağlantıları için X11 yönlendirmesini etkinleştiriyorum, ancak yavaş bağlantıları olan uzak yerler için yapamıyorum.
Bir ağaçta düzenli olarak 18-20 depo ile çalıştığım için git kimlik bilgilerim için güvenli depolama ve önbelleğe almam gerekiyor, bu yüzden git-credential-gnome-keyring'i libgnome-keyring kullanarak iletişim kuran git credential.helper olarak kullanıyorum gnome-keyring-daemon'a. Çözümleri test etmek için, monitörlü bir bilgisayar kurdum, varsayılan olarak sistemde çalışan anahtarlığı onayladım, sonra SSH ile denedim. X11 iletimi ile çalışır, ancak onsuz çalışmaz.

X11 iletimi olmadan bağlandığımda, anahtarlık sorgulandığında aşağıdaki hata oluşur ve araç komut satırında sormaya geri döner:

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

Soruşturma, temel sorunun, gnome-keyring-daemon'un bağlantıların onunla konuşmak için dbus kullanmasını beklediğini ortaya koyuyor. X11 oturumu yoksa dbus başlatılmaz, bu nedenle gnome-keyring-daemon ve bağlanacak libgnome-keyring için ortak bir dbus bus yoktur.

Her ikisi de benim için düzgün çalışmıyor olsa da, diğerleri bu soruna gönderdi iki çözüm buldum.

  1. X11 kullanan mevcut bir oturumdan DBUS bağlantı noktası alma
  2. Manuel olarak yeni bir DBUS bağlantı noktası başlatma

Varolan bir DBUS bağlantı noktasına bağlanırken, temel kavram varolan bir oturumun PID'sini bulmak, bu PID'nin ortamını procfs'den boşaltmak, onu aramak DBUS_SESSION_BUS_ADDRESSve geçerli ortamda dışa aktarmaktır. Bu, oturumlardaki her şey tarafından kullanılan DBUS veri yolunu yayınlamak için kullanılan değişken olduğundan, bu ayarın oturumdaki her şeyin ortak bir DBUS veriyolunda iletişim kurmasına izin vermesine rağmen, farklı bir oturumla ilişkili veri yolu.
Buradaki kaynaklar:
https://ubuntuforums.org/showthread.php?t=1059023

https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh- oturum /

Kod ssh girişinde yürütülüyor .bashrc benim eklendi:

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

Oturum için DBUS'u el ile başlatan ikinci yöntem, dbus-launchyeni bir oturum oluşturmak ve DBUS_SESSION_BUS_ADDRESSortamı ayarlamak için kullanmayı, ardından gnome-keyring-daemon'u tüm gerekli hizmetlerle başlatmayı ve böylece oluşturduğumuz DBUS veri yolu adresini görmeyi içerir. boş bir otobüs adresi yerine. Bu çözüm, gnome-keyring-daemon uygulamasının sistem başına bir örnek yerine oturum başına bir örnek çalıştıracak şekilde değiştirilmesini gerektirebilir veya gerektirmeyebilir, ancak bu açık değildir.
Kaynaklar:
8 numaradan başlayarak: https://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome- ssh-session

anahtar sözcüğü Yükseltme durumunda değişiklikleri kaybetmeden bir dbus hizmetinin "Exec" satırı nasıl değiştirilir
Ssh girişinde yürütülmekte olan benim .bashrc kod eklendi:

# 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

Her iki çözüm de aynı başarısız sonucu verir. Gnome-keyring-daemon ile iletişim kurulamadığını belirten hatayı derhal üretmek yerine, süreç bir süre askıda kalır ve sonra bu çıktıyı üretir:

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'un DBUS ile nasıl etkileşime girdiğine dair net değilim, ancak ikinci hata kümesinden net olarak, yeni oluşturulan bir DBUS veri yolu veya farklı bir DBUS veriyolunda çapraz işlem yoluyla ulaşılamamasına neden oluyor. Bulduğum şeylerden bazıları, gnome-keyring-daemon uygulamasının DBUS'un kendisinden önce başlatılmasını gerektirebileceğini gösteriyor, ancak kullanım (libgnome-keyring) veya daemon için durumun bu olmadığı belli değil.

Bunu nasıl çalıştırabilirim?


Gerçekten de dbus oturumu kullanıcı anahtarlık (daemon) önce başlatılması gerekir ayrıca x11 yönlendirme kullandığınızda uzak
anahtar

İlk yaklaşımın gösterdiği gibi, anahtarlık arka plan programı başlamadan önce dbus oturumuna başladım. Ve diyorsun ki, uzak sistemimdeki gnome-key-ring daemon'unu kullanan bir komut yürüttüğümde, oradaki dbus oturumuna bağlanmak için $ DISPLAY soketi aracılığıyla kaynak sistemime geri bağlantı kuruyor musunuz? Bu son derece olası görünmüyor, ama tamamen katılmama konusunda yeterince bilgim yok. Dbus grafiksel bir araç değildir, grafiksel uygulamalar tarafından çok kullanılan süreçler arası bir iletişim aracıdır.
mtalexan

Sadece burada spitballing, ama bir xsession "sahte" xvfb kullanarak denediniz mi. Çalıştırırsanız (ve başlatmayı bitirirseniz) ve DISPLAY var'ı dbus'un bir Xserver'ın çalıştığını bildiği şekilde dışa aktarmanız durumunda işe yarayabilir
TAAPSogeking

Yanıtlar:


1

Bu aptalca bir cevap olabilir ... ama, gnome-keyring'in en azından ana anahtarınızı istemek için bir X11 oturumuna erişmesi gerekir . Yani, onu tasarımla çalıştırmak imkansız ... değil mi?

EDIT: Belki bu imkansız değil . Bu gönderiye bakın , probleminize benziyor:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.