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.
- X11 kullanan mevcut bir oturumdan DBUS bağlantı noktası alma
- 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_ADDRESS
ve 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-launch
yeni bir oturum oluşturmak ve DBUS_SESSION_BUS_ADDRESS
ortamı 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?