Verwendung von gnome-keyring-daemon ohne X

20294
intuited

Ich frage mich, ob es möglich ist, gnome-keyring-daemon ohne X zu verwenden. Normalerweise wird eine grafische Eingabeaufforderung angezeigt, um ein Kennwort für den Schlüsselbund zu erhalten. gibt es da einen weg? Ich möchte ubuntu one verwenden können, ohne eine grafische Sitzung starten zu müssen und mein Passwort einzugeben.

24

4 Antworten auf die Frage

10
grawity

Sie können pam_gnome_keyring.soden Daemon starten und entsperren. GDM tut dies bereits; für login, müssen Sie es manuell konfigurieren.

Fügen Sie diese Zeilen hinzu /etc/pam.d/login:

auth optional pam_gnome_keyring.so Sitzung optional pam_gnome_keyring.so auto_start 

Wenn Sie sich ohne Kennwort anmelden (SSH mit Kerberos oder öffentlichen Schlüsseln), kann dies funktionieren: (Ich habe es nicht getestet)

echo -n "mypassword" | gnome-keyring-daemon --login

(Der Daemon muss noch ausgeführt werden - entweder über PAM oder mit gestartet --daemonize.)

Der zweite Fall ist in meinem Fall der Fall. Diese (undokumentierte?) `--Login`-Option ist ziemlich nützlich, obwohl ich mein unbehindertes Passwort sicher nicht in einem Skript behalten oder in eine Befehlszeile stellen möchte. Das Lesen im nicht gewählten Modus aus einem (nicht-Shell-sprachigen) Skript, das diese Eingabe dann an den erzeugten Dämon übergibt, ist wahrscheinlich eine gute Möglichkeit, dies zu tun. Ich sollte diesen Vorgang nur einmal pro Boot starten müssen, daher ist es sinnvoll, das Kennwort einzugeben. Ich muss es nur über die Befehlszeile tun können, anstatt über den GTK-Dialog. intuited vor 13 Jahren 0
ähm ... nevermind, es wird von gnome-keyring-daemon --help dokumentiert. Ich habe gerade die Manpage und / usr / share / doc überprüft. intuited vor 13 Jahren 1
@intuited: Nun, dann mach mal so etwas: `read -rsp" Password: "pass; echo -n "$ pass" | gnome-keyring-daemon --login` in einem Skript. grawity vor 13 Jahren 2
Ja, das würde funktionieren. Ich habe vergessen, dass das Echo ein eingebauter war. intuited vor 13 Jahren 0
Als Antwort auf den alten Kommentar von @intuited: "gnome-keyring-daemon --help" gibt mir einen guten Überblick, aber "man gnome-keyring-daemon" enthält nur eine kurze Beschreibung des Programms selbst, jedoch keine Argumente. feeela vor 11 Jahren 0
9
Stephen Gray

Zusammenfassung

Die erforderlichen Aufträge für die Installation von svn mit Schlüsselringunterstützung und die Installation der Anwendung Collabnet keyring_tool werden für unsere Linux-Server bereits ausgeführt.

1) Konfigurieren Sie den SVN-Client für die Verwendung des Schlüsselrings:

1.1) Edit ~ / .subversion / config

[auth] password-stores = gnome-keyring 

1.2) Bearbeiten Sie ~ / .subversion / Server

[global] store-passwords = yes store-plaintext-passwords = no 

2) Erstellen Sie einen Schlüsselbund für Ihr Passwort. Sie werden aufgefordert, ein neues Passwort zu erstellen, um den Schlüsselbund zu entsperren. Dies kann alles sein, was Sie wünschen:

keyring_tool --create=svn 

3) Legen Sie den neuen Schlüsselring als Standard fest:

keyring_tool --setdef=svn 

4) In .bash_profile oder .bash_login (vorausgesetzt, Sie verwenden bash als Terminal)

 if [ -e /usr/bin/gnome-keyring-daemon ]; then if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then # Create dbus transport link for SVN to talk to the keyring. eval `dbus-launch --sh-syntax`  # Start the keyring daemon. # The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK # env values echoed out at startup. export `/usr/bin/gnome-keyring-daemon` fi fi 

5) In .bash_logout

 # Kill the message bus established for SVN / Keyring communication if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1 fi  # Kill the Gnome Keyring Daemon prior to logout. if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then kill $GNOME_KEYRING_PID > /dev/null 2>&1 fi 

Hintergrund

Ich hatte ein ähnliches Problem, als ich versuchte, einen problemlosen Weg zu finden, um den Zugriff berechtigter Benutzer auf bestimmte SVN-Repos bei der Arbeit sicherzustellen. Grundsätzlich mussten wir die Berechtigungsnachweise jedes Mal erzwingen, wenn ein Benutzer auf den Server zugreift, sodass selbst der Befehl svn update eine Authentifizierung erfordert. Die Speicherung von Klartextkennwörtern war eindeutig nicht verfügbar. Daher kam ich mit ein wenig Nachforschungen dazu, den gnome-keyring zu verwenden, um unsere Benutzerbasis mit ständigen Authentifizierungsanfragen zu belästigen und gleichzeitig unberechtigte Benutzer aus Repositorys zu entfernen, auf die sie keinen Zugriff haben sollten.

Ein Großteil unserer täglichen Arbeit erfolgt über SSH-Tunnel in einen RedHat-Server ohne X-Unterstützung, daher musste ich einen Weg finden, den X11-Support zu umgehen. Nach einigem Suchen fand ich hier den Weg:

Quellenmaterial

http://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring-in-an-ssh -Session

Der Schlüssel ist hier die Verwendung des Collabnet keyring_tool, um einen Schlüsselring ohne den gnome-keyring-manager-Client zu erstellen, und den dbus-Launch selbst zu erstellen, anstatt dass SVN das Setup übernimmt. SVN verwendet DBUS, um eine Verbindung zum gnome-keyring-daemon herzustellen und die allgemeine Authentifizierung zu beeinflussen. Indem Sie die dbus-Sitzung mit -sh-Syntax manuell starten und herunterfahren, vermeiden Sie beim dbus-Start die Verbindung zu einem X-Client. Wenn Sie nur den gnome-keyring-daemon starten und versuchen, SVN zu verwenden, werden Sie zwar noch nach Ihrem Schlüsselringkennwort gefragt, dann aber auch nach Ihren SVN-Anmeldeinformationen. Der dbus schlägt fehl, wenn SVN versucht, ihn zu starten, da kein X-Client vorhanden ist. anscheinend verwendet SVN beim Starten des dbus keine speziellen Flags.

Vielen Dank dafür. Ich habe mir die Haare ausgezogen und versucht, den Fehler "KRITISCH **: Fehler beim Kommunizieren mit gnome-keyring-daemon" bei git pull zu beseitigen. Ihre Änderungen an ~ / .profile und ~ / .bash_logout haben das behoben ... Sie speichern zwar keine Passwörter, aber ich bin einen Schritt näher! (Ubuntu 16.04.1 LTS) Chris B vor 7 Jahren 0
1
quack quixote

Zunächst möchten Sie Ubuntu One ausschließlich über die Befehlszeile ausführen. Schauen Sie sich die Ubuntu One-FAQ an . Die FAQ sagt, dass dies derzeit nicht möglich ist, es gibt jedoch einige CLI-Tools wie u1sdtool und u1sync . Es gibt auch eine Reihe von FAQs zu Ubuntu One auf Launchpad. Der Inhalt kann derselbe sein wie der vorherige Link auf wiki.ubuntu.com.

In Bezug auf Ihre eigentliche Frage zu gnome-keyring-daemon wird in der FAQ vorgeschlagen, (1) die automatische Anmeldung und (2) Ihr Schlüsselbundkennwort mit Ihrem Anmeldekennwort zu synchronisieren. Dies würde (theoretisch) die Aufforderung zur Kennworteingabe vermeiden, es müsste jedoch mindestens eine grundlegende X-Sitzung ausgeführt werden.

Auf Launchpad gibt es einen Fehler / eine Wunschliste für Ubuntu One, der die Handhabung von Headless-Systemen vereinfacht. Offensichtlich wird das Erstellen aus einer Quelle für eine einfache Installation empfohlen (um zu vermeiden, dass alle GUI-Bibliotheken und dergleichen benötigt werden). Dieser Kommentar ist alt, aber besonders interessant:

Das Problem ist, dass wir Python-Gnomekeyring verwenden. Damit wir Headless unterstützen können, müssen wir zu Python-Keyring wechseln und Token anders als Gnome-Keyring auf Headless-Displays speichern. Dies wird jedoch für die Karmic-Verpackung nicht passieren, da sie gefroren ist. Diese Änderung wäre in einer SRU nicht akzeptabel.

Für Lucid sollten wir einen stabileren Authentifizierungsdienst haben, der es uns ermöglicht, Headless-Displays besser zu unterstützen.

Ich kann nicht sagen, ob dieser "robustere Authentifizierungsdienst" tatsächlich für Lucid eingerichtet wurde. Basierend auf den Paketabhängigkeiten scheint es, dass der Ubuntu One-Client immer noch von python-gnomekeyring abhängig ist.

0
DrGecko

Ich hatte einige Erfolge damit, dass mysql-workbench in einer x-weitergeleiteten SSH-Sitzung mit gnome-keyring zusammenarbeitete. Hierbei handelt es sich um ein Konto, das die Authentifizierung mit öffentlichem Schlüssel verwendet (kein Kennwort).

Ich habe dbus-run-session verwendet, um dies zu erreichen, sobald ich mit der ssh-Session verbunden war:

dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose' 

hoffentlich sind diese Informationen für jemanden nützlich!