Wie fügt man ssh-agent beim Start automatisch einen geschützten Schlüssel hinzu?

3

Ich verwende gdm, um awesome WM über .xinitrc zu starten. Ich mag die Benutzerfreundlichkeit und die Integrität der Gnomen. Bislang funktionieren die meisten Startprogramme gut, aber ich kämpfe mit ssh-agent. Beim Start von gnome wird mein passwortgeschütztes id_rsa beim Start automatisch zu ssh-agent hinzugefügt. Ich versuche, das gleiche zu erreichen, wenn mein .xinitrc awesome wm gestartet ist.

Meine .xinitrc:

/usr/libexec/at-spi-registryd &
/usr/libexec/gdu-notification-daemon &
gnome-screensaver &
/usr/libexec/vino-server --sm-disable &
/usr/bin/gnome-keyring-daemon --start --components=keyring &
/usr/bin/gnome-keyring-daemon --start --components=secrets &
/usr/bin/gnome-keyring-daemon --start --components=ssh &
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 &
/usr/bin/gnome-keyring-daemon --start --components=gpg &
/usr/libexec/polkit-gnome-authentication-agent-1 &
/usr/libexec/evolution/2.32/evolution-alarm-notify &
/usr/libexec/gnome-settings-daemon &
gnome-power-manager &
gsettings-data-convert &
gnome-volume-control-applet &
nm-applet --sm-disable &
exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/bin/ssh-agent -- awesome

Wie geht Gnome damit um?

matthias krull
quelle

Antworten:

6

GNOME speichert Ihre SSH-Schlüssel-Passphrasen in GNOME Keyring login Schlüsselring) ist mit Ihrem Login-Passwort von freigeschaltet pam_gnome_keyring:

#%PAM-1.0
auth           ...
auth           ...
auth           optional        pam_gnome_keyring.so

session        ...
session        ...
session        optional        pam_gnome_keyring.so auto_start

Ihr aktuelles Setup funktioniert jedoch nicht damit, da Sie a starten ssh-agent auf der letzten Stufe alle Umgebungsvariablen überschreiben, die Gnome-Schlüsselring kann eingestellt haben. Löschen ssh-agentund füge dies nach allen Keyring-Daemon-Prozessen hinzu:

eval $(gnome-keyring-daemon --start)

Denken Sie auch daran gnome-keyring-daemon veröffentlicht einige Umgebungsvariablen über DBus, die dann von gelesen werden gnome-shell. was Awesome nicht tut. Das, und Sie sind Starten des DBus-Sitzungsbusses nach dem Alle Dämonen haben begonnen, Daher können sie möglicherweise überhaupt keine Verbindung zu Ihrer Sitzung herstellen.

Noch etwas: viele der Daemons muss gestartet werden Innerhalb eine ConsoleKit-Sitzung - Zum Beispiel der PolicyKit-Authentifizierungsagent. Sie haben mehr Glück, wenn Sie Ihr gesamtes ersetzen ~/.xinitrc Skript mit:

exec ck-launch-session dbus-launch --exit-with-session ~/.xinitrc-session

dann benutze ~/.xinitrc-session um den Rest von GNOME zu starten.


Sie können einen einfacheren Weg gehen. Verwenden Sie den Standard ck-launch-session dbus-launch --exit-with-session gnome-session, und nur Teilen Sie dem GNOME-Sitzungsmanager mit, dass Awesome als Fenstermanager gestartet werden soll. Befolgen Sie die offiziellen Anweisungen.

Kurzform für GNOME 2:

mkdir -p ~/.local/share/applications/
cp /usr/share/applications/awesome.desktop ~/.local/share/applications/
cat >> ~/.local/share/applications/awesome.desktop
X-GNOME-WMName=Awesome
X-GNOME-WMSettingsModule=awesome
X-GNOME-Autostart-Phase=WindowManager;Panel
X-GNOME-Provides=windowmanager;panel
X-GNOME-Autostart-Notify=true
[Ctrl-D]
gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string awesome
grawity
quelle
Sehr schöne Antwort Funktioniert das alles in Gnome 2 & amp; 3?
Benjamin Bannier
@honk: GNOME 3 verwendet denselben Keyring (erster Teil), behandelt jedoch den Sitzungskram (zweiten Teil) etwas anders. Die Awesome-Wiki-Seite enthält Anweisungen für beide.
grawity
Wie sich herausgestellt hat, wird der ssh-agent von gdm gestartet, bevor .xinitrc ausgeführt wird. eval $(gnome-keyring-daemon --start) Vor dem Ausführen von Awesome hat der Trick stattgefunden, also fehlten wirklich nur die Umgebungsvariablen. Danke, dass Sie mich in die richtige Richtung drängen.
matthias krull
@mugen: Ich hoffe, du hast den ganzen Beitrag gelesen, nicht nur den ersten.
grawity
1
Natürlich habe ich. Die Verwendung von awesome as Gnome windowmanager funktionierte in der Regel mit den Anweisungen aus dem genialen Wiki, konnte dies aber kürzlich nicht. .xinitrc wird über ausgeführt /usr/bin/dbus-launch --exit-with-session /usr/bin/ssh-agent -- /etc/X11/gdm/Xsession custom. Eine DBus-Sitzung und ein ssh-agent laufen also bereits. Damit konsolekitabhängige Programme wie nm-applet funktionieren, musste ich nichts anderes tun, als awesome selbst in einer Console Kit-Sitzung zu starten. Die Umgebungsvariablen waren wirklich der fehlende Teil.
matthias krull
2

Gibt es einen bestimmten Grund, nicht zu verwenden? pam_ssh ? Ich finde es ziemlich bequem.

lkraav
quelle
Ich habe alles mit Software laufen, die sowieso als Abhängigkeiten herangezogen wird. Am Ende fehlte eine einzige Zeile. Es gab also keinen Grund, eine andere Software zu verwenden. Aber danke, dass Sie es erwähnt haben, ich werde es auf jeden Fall genauer betrachten.
matthias krull
1
Das letzte Mal, als ich pam_ssh verwendete, stürzte es ab und brannte, als ich versuchte, einen ECDSA-Schlüssel zu importieren. Dadurch konnte ich mich nicht anmelden. (Zwar unterstützt gnome-keyring es auch nicht, aber es scheitert zumindest anständig.)
grawity