HINWEIS: ist keine Antwort zur Lösung des Grundproblems. Bitte geben Sie eine neue Antwort, wenn Sie der Meinung sind, dass Sie die Grundursache lösen können. Sie müssen wirklich lesen, warum meine Lösung nur ein hässlicher Hack ist.
Hier ist eine Erklärung, was beim Booten passiert, um den Schuldigen zu identifizieren.
Wenn Sie KDM (oder LightDM) als Anmeldemanager verwenden, wird beim Anmelden eine X-Sitzung für Sie erstellt. Mit dem Anmeldemanager können Sie eine X-Sitzung (z. B. GNOME, KDE Plasma usw.) basierend auf den in Ihrem System verfügbaren auswählen . Das Verzeichnis /usr/share/xsessions
enthält die Dateien für jede dieser installierten Desktop-Umgebungen, und Ihre benutzerspezifische Auswahl wird in gespeichert ~/.dmrc
.
Während die Desktop-Umgebung nach dem Anmelden geladen wird, werden alle Skripts geladen /etc/X11/Xsession.d/
. Auf einem Kubuntu 14.04-System wird /etc/X11/Xsession.d/90x11-common_ssh-agent
dort standardmäßig ein SSH-Agent initialisiert. Wie erwartet. Großartig!
In der Praxis sehen wir jedoch verschiedene Dinge. Woher kommt gnome-keyring-daemon
dann und warum wird der reguläre ssh-agent
nicht gestartet? Nun, der GNOME-Schlüsselring wird auf zwei Arten gestartet:
- XDG-Autostart, in
/etc/xdg/autostart/gnome-keyring-ssh.desktop
- Als Upstart- Sitzungsjob in
/usr/share/upstart/sessions/gnome-keyring.conf
Alle Skripte prüfen zunächst die Umgebungswerte, ob sie fortgesetzt werden. Z.B
[ -z "$SSH_AUTH_SOCK" ] || [ -z "$GPG_AGENT_INFO" ] || { stop; exit 0; }
Dies macht es zu einer Art Rennbedingung, bei der der SSH-Agent tatsächlich gestartet wird. Der erste gewinnt. Machen Sie sich auf böse Dinge gefasst.
Wie kommt es, dass es an einer Maschine zuverlässig funktioniert und an einer anderen nicht zuverlässig ? Die X-Session-Upstart-Jobs werden nur gestartet, wenn die DESKTOP_SESSION
Umgebungsvariable für sie in der Whitelist aufgeführt ist /etc/upstart-xsessions
und von verarbeitet wird /etc/X11/Xsession.d/00upstart
. Mit KDM kann eine Desktop-Umgebung "Standard" ( default
in ~/.dmrc
) festgelegt werden kde-plasma
, die jedoch nicht angezeigt wird kde-plasma
.
Mit Session=kde-plasma
:
⟫ echo $DESKTOP_SESSION
kde-plasma
Mit Session=default
in einem KDE Plasma Desktop:
⟫ echo $DESKTOP_SESSION
default
Das ist einfach falsch. Und Sie können jetzt erraten, warum die Whitelist-Prüfung fehlschlägt /etc/upstart-xsessions
.
Schnelle Lösung zum Ausführen der Terminalsitzung
killall gnome-keyring-daemon && eval `ssh-agent`
Fazit
Es scheint, dass man einen Fehler finden kann, wenn alle Upstart-Sitzungsjobs überhaupt nicht gestartet werden. Ein weiterer Fehler verhindert die ordnungsgemäße Verbindung mit dem SSH-Agenten des GNOME-Schlüsselbunds (oder ssh-add
sollte sich beschweren und fehlschlagen). Oh, ich hasse dich, Käfer.
Sobald ich Zeit finde, nachzuforschen, was genau was tun soll, werde ich die Fehlerberichte einreichen.
Im Moment habe ich beschlossen, nur den Upstart-Fehler zu verwenden und zu verhindern, dass Upstart-Sitzungsjobs durch Festlegen ausgeführt werden Session=default
. Ich bin mir nicht sicher, wie viel das bricht, aber bisher habe ich nichts auseinander fallen sehen.
Die Hauptursache ist in erster Linie das Auftreten des GNOME-Schlüsselbunds, der mich nicht anlügen und weiterhin falsche Schlüssel anbieten sollte.
/usr/share/upstart/sessions/gnome-keyring-ssh.conf
bedeutet, dassecho 'X-GNOME-Autostart-enabled=false' >> ~/.config/autostart/gnome-keyring-ssh.desktop
mindestens die Route zum Ausführen der SSH-Unterstützung von gnome-keyring blockiert werden sollte. Ich bin gerade dabei, das zu versuchen.