it-swarm.com.de

xubuntu: Stoppen Sie den gnome-keyring-daemon, um sich als ssh-agent auszugeben

Ich möchte in xubuntu den echten ssh-agent anstelle des gnome-keyrings verwenden. Ich folgte den Schritten von http://dtek.net/blog/how-stop-gnome-keyring-clobbering-opensshs-ssh-agent-ubuntu-1204 , aber der Gnome-Schlüsselring registriert sich immer noch als ssh -Agent. Ich möchte weiterhin Gnome-Keyring für andere Passwörter verwenden

6
JanKanis

Wenn die Gnome-Kompatibilität in xfce aktiviert ist, startet xfce4-session den Gnome-Keyring-Daemon bedingungslos. Dies ist fest codiert, es gibt momentan keine Möglichkeit, dies zu konfigurieren. Wenn Sie den Gnome-Kompatibilitätsmodus deaktivieren, wird der Schlüsselbund beim Anmelden nicht gestartet, und Sie müssen Ihr Kennwort erneut eingeben, wenn Sie ihn starten.

Die einfachste Lösung scheint darin zu bestehen, den Aufruf von gnome-keyring-daemon abzufangen und ein Skript einzufügen, das das Flag --components in die Argumente einfügt, um zu verhindern, dass der gnome-keyring ssh-add ersetzt.

Führen Sie Folgendes aus, um den gnome-keyring-daemon zu verschieben:

Sudo mv /usr/bin/gnome-keyring-daemon /usr/bin/gnome-keyring-daemon-wrapped

erstelle einen neuen gnome-keyring-daemon mit

Sudo nano /usr/bin/gnome-keyring-daemon

und füge den folgenden Inhalt ein:

#!/bin/sh
exec /usr/bin/gnome-keyring-daemon-wrapped --components=pkcs11,secrets,gpg "[email protected]"

Machen Sie den neuen gnome-keyring-daemon mit Sudo chmod +x /usr/bin/gnome-keyring-daemon ausführbar.

Der Gnome-Schlüsselbund versucht nun nicht mehr, ssh-add zu ersetzen.

Beachten Sie, dass durch das Upgrade Ihres Systems der Standard-Gnome-Keyring-Daemon wiederhergestellt wird. Daher müssen Sie die obigen Schritte nach dem Upgrade wahrscheinlich erneut ausführen.

edit:

In xubuntu 14.10 funktioniert der Start etwas anders, da g-k-d auch vom Start der Sitzung an gestartet wird. Es ist möglich, die Upstart-Konfiguration zu überschreiben, damit die ssh-Komponente nicht gestartet wird. Dennoch startet g-k-d die ssh-Komponente, wenn xfce4-session ebenfalls versucht, sie zu starten. Wenn Sie möchten, dass xfce Gnome-Dienste auch automatisch startet, benötigen Sie weiterhin den oben genannten Hack. Eine Alternative besteht darin, die Gnomendienste zu deaktivieren (Einstellungen -> Sitzung und Start -> Erweitert -> GNOME-Dienste beim Start starten), upstart so zu konfigurieren, dass gkd mit dem Flag --components=pkcs11,secrets,gpg gestartet wird, und optional auch die gewünschten Gnomendienste zu konfigurieren manuell zu starten.

(Abgesehen von den beiden oben erwähnten Orten, an denen gkd gestartet wird, wird der gk-Daemon auch zuvor von lightdm/PAM gestartet, um das Anmeldekennwort des Benutzers zu erhalten. Bei diesem Start wird gkd jedoch nicht vollständig konfiguriert und es wird erwartet, dass es weiterhin vollständig konfiguriert wird durch einen zweiten Startversuch, so dass dieser Startversuch für das aktuelle Problem nicht relevant ist.)

5
JanKanis

Es ist ein alter Thread, aber meine Problemumgehung für dieses Problem unter Xubuntu 14.04 ist einfach, indem ich gnome-keyring-daemon bei Sitzung und Start erneut öffne. Sie müssen lediglich den folgenden Befehl ausführen:

$ gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg

Wir entfernen "ssh" aus der Komponente des Gnome-Schlüsselbunds.

  1. Gehen Sie zu Menü> Einstellungen> Sitzung und Start
  2. Klicken Sie auf die Registerkarte Application Autostart
  3. Klicken Sie auf die Schaltfläche Hinzufügen
  4. Es erscheint ein neues Anwendungsfenster, das Sie wie im folgenden Beispiel ausfüllen können.
    1. Name: SSH Keyring Remover
    2. Beschreibung: Entfernen Sie SSH vom GNOME-Schlüsselring
    3. Befehl: gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
  5. OK klicken

Versuchen Sie, Ihre XFCE-Sitzung abzumelden und sich erneut anzumelden. Um sicherzustellen, dass Gnome Keyring ssh nicht mehr verwaltet, führen Sie einfach aus.

$ ssh-add -l
Could not open a connection to your authentication agent.

Wenn Sie diese Meldung erhalten, bedeutet dies, dass der Gnome-Schlüsselring Ihr SSH nicht verwaltet und Sie die ursprüngliche OpenSSH-Implementierung von ssh-agent verwenden können.

3
rioastamal

Um auf der Antwort von @JanKanis aufzubauen, habe ich sie auf xfce4-session zurückgeführt, die der Täter für die Initiierung des Befehls gnome-keyring-daemon --start ist.

Auf diese Weise überprüft der gnome-keyring-daemon nicht, ob bereits SSH_AUTH_SOCK gesetzt ist. Dies ist eine "Funktion", da dann sowohl der ssh-agent als auch der gnome-keyring-daemon einen Socket bereitstellen können.

Das wichtigste zuerst:

~/.config/upstart/gnome-keyring.conf hinzufügen:

description "GNOME Keyring agents"
author "Dimitri John Ledkov <[email protected]>"

start on (starting xsession-init or starting ssh-agent or starting gpg-agent) and started dbus

task
script
    # Stop because I say so
    stop; exit 0
    eval "$(gnome-keyring-daemon --start)" >/dev/null
    initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
    initctl set-env --global GPG_AGENT_INFO=$GPG_AGENT_INFO
end script

Ersetzen Sie nun gnome-keyring-daemon durch einen Wrapper (ich habe das Original nach/usr/libexec/verschoben):

#!/bin/sh

gkd=/usr/libexec/gnome-keyring-daemon
debug=1
log=${XDG_CACHE_HOME:-"${HOME}/.cache"}/gkd.log

if [ ${debug} -gt 0 ]
then
    echo "================" >> ${log}
    echo "Invoked as $0 [email protected]" >> ${log}
    echo "================" >> ${log}
    /usr/bin/pstree -lag >> ${log}
fi

case "[email protected]" in
    *--start*)
        $gkd --components=pkcs11,secrets,gpg "[email protected]"
        ;;
    *)
        $gkd "[email protected]"
        ;;
esac
if [ ${debug} -gt 0 ]
then
    /usr/bin/pstree -lag  >> ${log}
fi

Der Debug-Code hilft Ihnen herauszufinden, warum er nicht mehr funktioniert. Da keines dieser Programme über vernünftige Konfigurationsmethoden verfügt, führt kein Weg an Hacking-Befehlen vorbei. In diesem Fall kann ich keine dokumentierte Konfigurationsmethode für xfce4-session finden, mit der gnome-keyring-daemon --start nicht aufgerufen werden kann, da dies keine anderen Nebenwirkungen hat. Sie alle machen Annahmen über die Dinge, die installiert werden, und lesen die Gedanken des Benutzers.

3
Melvyn Sopacua

Hier ist eine weniger invasive Version des Skripts, das JanKanis gepostet hat. Es akzeptiert alle Komponenten, die an es übergeben wurden, zieht jedoch die SSH-Komponente heraus.

#!/bin/bash

ARGS="[email protected]"

COMPONENTS=""
if [[ $ARGS =~ \-\-components= ]]; then
    component_match_expression='(\-\-components=([0-9a-z,]+))'
    COMPONENTS=$(echo $ARGS | grep -oP "$component_match_expression")

    ARGS=$(echo $ARGS | sed -E "s/$component_match_expression//")

    COMPONENTS="--components=$(echo $COMPONENTS | grep -oP '(?<=\-\-components=)([0-9a-z,]+)' | sed -e 's/ssh//' -e 's/,,/,/')"
    if [ "$COMPONENTS" != "--components=" ]; then
        ARGS="$ARGS $COMPONENTS"
    else
        exit 0
    fi
fi

/usr/bin/gnome-keyring-daemon-wrapped $ARGS
2
SPoage

Ich bin gerade auf dieses Problem unter Xubuntu 16.04 gestoßen und wollte, dass sowohl ssh-agent als auch gpg-agent funktionieren.

Erstens interessierte mich der Gnom-Schlüsselring nicht, deshalb entfernte ich alle zugehörigen Pakete. z.B.

Sudo dpkg -P libgnome-keyring-common libgnome-keyring0 libp11-kit-gnome-keyring libpam-gnome-keyring libgnomeui-0 python-gnome2 gir1.2-gnomekeyring-1.0 system-config-printer-gnome

Zu diesem Zeitpunkt wurden ssh-agent und gpg-agent beide erfolgreich ausgeführt, aber gpg konnte keine Verbindung zu gpg-agent herstellen, da $GPG_AGENT_INFO nicht festgelegt wurde. Das ist wirklich komisch, denn wenn wir in /etc/X11/Xsession.d/90gpg-agent schauen, wird es anfangs eindeutig festgelegt. Es muss etwas sein, das es aufhebt.

Um den Täter zu finden, habe ich eine benutzerdefinierte Sitzungsdatei erstellt:

$ cat /usr/share/xsessions/xsession.desktop 
[Desktop Entry]
Version=1.0
Name=Xsession
Exec=/etc/X11/Xsession
Icon=
Type=Application

Ich habe dann eine benutzerdefinierte ${HOME}/.xsession -Datei erstellt und sie mit etwa folgendem Code ausführbar gemacht:

#!/bin/sh

# DEBUG
echo "GPG_AGENT_INFO: ${GPG_AGENT_INFO}" > "${HOME}/GPG_AGENT_INFO"

# Defined by /etc/alternatives/x-session-manager
exec x-session-manager

Ich habe mich abgemeldet, lightdm neu gestartet und mich erneut angemeldet (mit der ausgewählten "Xsession" -Sitzung) und ${HOME}/GPG_AGENT_INFO überprüft. Sicher genug, die Umgebungsvariable war immer noch gesetzt. Also war es etwas Dummes, was Xfce4 tat.

Beim Stöbern bin ich schließlich auf Folgendes gestoßen:

$ strings /usr/bin/xfce4-session | grep gpg
/startup/gpg-agent/enabled
gpg-agent
gpg-agent-info
GNOME compatibility is enabled and gnome-keyring-daemon is found on the system. Skipping gpg/ssh-agent startup.
gpg-agent is configured as SSH agent, but gpg-agent is disabled or not found
Failed to kill gpg-agent with pid %d
$

Scheint, dass xfce4-session die Variable wahrscheinlich deaktiviert, wenn versucht wird, gnome-keyring-daemon zu starten, sodass für die Lösung zwei Schritte erforderlich sind. Gehen Sie zuerst zu Applications -> Settings -> Session and Startup -> Advanced und kreuzen Sie Launch GNOME services on startup an. Erstellen Sie als Nächstes eine ausführbare Datei mit dem Namen gnome-keyring-daemon irgendwo in Ihrem $PATH mit folgendem Inhalt:

#!/bin/sh
#
# This script exists to satisfy an XFCE4 check which prevents
# the GPG_AGENT_INFO environment variable getting unset.

Melden Sie sich ab und wieder an, und Sie sollten sortiert sein. Sie sollten nun auch in der Lage sein, /usr/share/xsessions/xsession.desktop und ${HOME}/.xsession zu löschen, wenn Sie diese ebenfalls erstellt haben, da sie nur zum Debuggen gedacht waren.

2
boltronics