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

6109
matthias krull

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?

3

2 Antworten auf die Frage

6
grawity

GNOME speichert Ihre SSH-Schlüssel-Passphrasen im GNOME-Schlüsselbund, der (der loginSchlüsselbund) mit Ihrem Anmeldekennwort wiepam_gnome_keyring folgt entsperrt wird :

#%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 ssh-agentim letzten Schritt a starten und dabei alle Umgebungsvariablen überschreiben, die von gnome-keyring festgelegt wurden. Entfernen Sie diese ssh-agentund fügen Sie sie nach allen Schlüsselringdämonprozessen hinzu:

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

Denken Sie auch daran, dass gnome-keyring-daemoneinige Umgebungsvariablen über DBus veröffentlicht werden, die dann gelesen werden gnome-shell, was Awesome nicht tut. Das, und Sie starten den DBus Sitzung Bus nach all Daemons gestartet haben, so dass sie nicht in der Lage sein können, überhaupt zu Ihrer Sitzung zu verbinden.

Eine weitere Sache: Viele der Daemons müssen in einer ConsoleKit-Sitzung gestartet werden, beispielsweise mit dem PolicyKit-Authentifizierungsagenten. Sie haben mehr Glück, wenn Sie Ihr gesamtes ~/.xinitrcSkript durch Folgendes ersetzen :

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

Verwenden Sie dann ~/.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-sessionund teilen Sie dem GNOME-Sitzungsmanager mit, dass er Awesome als Fenstermanager starten 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 
Sehr schöne Antwort Funktioniert das alles in Gnome 2 und 3 auf dieselbe Weise? Benjamin Bannier vor 12 Jahren 0
@honk: GNOME 3 verwendet den gleichen Keyring (erster Teil), behandelt jedoch den Sitzungskram (zweiten Teil) etwas anders. Die Awesome-Wiki-Seite enthält Anweisungen für beide. grawity vor 12 Jahren 0
Wie sich herausgestellt hat, wird der ssh-agent von gdm gestartet, bevor .xinitrc ausgeführt wird. `eval $ (gnome-keyring-daemon --start)`, bevor awesome ausgeführt wurde, hat den Trick gemacht, also dort, wo nur die Umgebungsvariablen fehlen. Danke, dass Sie mich in die richtige Richtung drängen. matthias krull vor 12 Jahren 0
@mugen: Ich hoffe, du hast den ganzen Beitrag gelesen, nicht nur den ersten. grawity vor 12 Jahren 0
Natürlich habe ich. Die Verwendung von awesome as Gnome windowmanager funktionierte in der Regel mit den Anweisungen des genialen Wikis, konnte dies aber kürzlich nicht. .xinitrc wird über `/ usr / bin / dbus-launch --exit-with-session / usr / bin / ssh-agent - / etc / X11 / gdm / Xsession custom` ausgeführt. 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 vor 12 Jahren 1
2
lkraav

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

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 vor 12 Jahren 0
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 vor 12 Jahren 1