Wo setzt der Gnomschlüsselring $ SSH_AUTH_SOCK?


10

Ich bin gerade dabei, mich gnome-keyringals SSH-Agent loszuwerden .

Dinge, die ich getan habe

  • Ich habe stundenlang im Internet gesucht.
  • Oft geändert und neu gestartet.
  • Schließlich habe rmich gerade alle Autostart-Dinge im Zusammenhang mit SSH erledigt.

Das letzte hat magisch funktioniert, da es dort keine Steckdose mehr für den Agenten gibt:

/run/user/[uid]/keyring/ssh

Problem

Das verbleibende Problem besteht darin , dass trotz meiner des wunderbare zuvor erwähnte Ergebnis zu erhalten, was in gnome-keyringnoch beharrt auf Einstellung SSH_AUTH_SOCKauf den jetzt nicht vorhandenen oben Buchse. Es ist wie mit Zombies, diese Dinge sterben nie.

Frage

Was setzt diese Variable und wo wird sie durchgeführt?

Tücken

  • Ich frage nicht , wie ich diese Variable auf einen anderen Wert zurücksetzen kann.
  • Ich frage nicht , wie ich diesen Wert systemweit oder in einer Shell-Konfigurationsdatei festlegen kann.
  • Ich bitte nicht um einige Init-Skript-Voodoo-Beschwörungsformeln, um etwas einzufrieren, festzulegen, zurückzusetzen, zu deaktivieren oder zu ersetzen.
  • Ich bitte nicht um Rat, wie man das Ding deinstalliert: Ich brauche es immer noch für meine Passwörter und es scheint der am besten integrierte und ausgefeilte Passwort-Manager in Gnome zu sein.

Ich möchte, dass das Ding deaktiviert wird, wie es sein sollte.


2
Gnome-Schlüsselring deinstallieren?
Rudimeier

1
@rudimeier: Ich brauche immer noch einen Gnome-Schlüsselring für meine Passwörter und soweit ich weiß, gibt es nichts besseres und integrierteres in Gnome.
JohnW

@ Rudimeier auch das scheint nicht zu helfen. Ich habe es versucht.
André Borie

Antworten:


7

Lass mich raten - du benutzt Wayland. Ich bin heute auf dieses Problem gestoßen und dachte, ich würde die Lösung teilen.

Gnome-Session hat SSH_AUTH_SOCKaus irgendeinem Grund einen fest codierten Override für under wayland. Siehe das folgende Commit: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

Die Problemumgehung? Legen Sie eine Umgebungsvariable fest, um dieses Verhalten zu deaktivieren : GSM_SKIP_SSH_AGENT_WORKAROUND=1. Dadurch wird der Umgebungseinstellungscode kurzgeschlossen.

Für Personen, die dies finden und auch versuchen, ssh-agent zu konfigurieren: In meiner systemd-Einheitendatei für ssh-agent habe ich die folgende Zeile:

ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

Die vollständige Datei sieht folgendermaßen aus:

[Unit]
Description=SSH Agent
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

[Install]
WantedBy=default.target

Vielen Dank! Unter Ubuntu v17.10 Artful Aardvark wurde durch einfaches Hinzufügen export GSM_SKIP_SSH_AGENT_WORKAROUND=1zu meinem ~ / .profile und Neustarten meine Konfiguration behoben, die zuvor in v17.04 funktioniert hatte.
Stephen Niedzielski

Dies scheint mehr als nur Wayland zu betreffen. Ich bin darauf gestoßen, als ich versucht habe, Gnome-Flashback + i3 zu verwenden.
Dragon788

Bitte beachten Sie, dass dieser Hack bis Gnome 3.24 oder älter ( wiki.archlinux.org/index.php/GNOME/… ) funktioniert
Pablo Olmos de Aguilera C.

5

(Die Umgebung von OP ist nicht bekannt, daher sind die hier angegebenen Pfade die auf meinem Ubuntu-Computer gefundenen.)

Wo setzt der Gnomschlüsselring SSH_AUTH_SOCK?

Um die Hauptfrage im Titel zu beantworten, wird SSH_AUTH_SOCK durch Gnome-Schlüsselbund /usr/share/upstart/sessions/gnome-keyring-ssh.confmit dem folgenden Befehl festgelegt:

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

Zitat des initctlHandbuchs:

initctl set-env VARIABLE[=VALUE]

Fügt eine Variable in einer Jobumgebungstabelle hinzu oder aktualisiert sie. Auf diese Weise festgelegte Variablen gelten für alle nachfolgend gestarteten Prozesse für einen Job.

-g, --global

Arbeiten Sie mit der globalen Jobumgebungstabelle und allen vorhandenen laufenden Jobumgebungstabellen.

Woher kommt SSH_AUTH_SOCK überhaupt?

Der initctlobige Befehl hängt davon ab, dass die Umgebungsvariable SSH_AUTH_SOCK bereits vorhanden ist. Also, ist es eine Henne-Ei-Situation? Was setzt es?

SSH_AUTH_SOCK wird anfänglich vom ursprünglichen ssh-Agenten festgelegt, der zu Beginn der X-Sitzung gestartet wird. Zitat des Handbuchs:

Ein UNIX-Domänen-Socket wird erstellt und der Name dieses Sockets wird in der SSH_AUTH_SOCKUmgebungsvariablen gespeichert . Der Socket wird nur dem aktuellen Benutzer zugänglich gemacht.

ABER die ssh-Komponente des Gnome-Schlüsselbunds ersetzt sich selbst durch den vorhandenen ssh-Agenten. Daher überschreibt es SSH_AUTH_SOCK mit einem eigenen Socket, /run/user/.../keyring-.../sshsodass Anwendungen mit ihm und nicht mit ssh-agent kommunizieren .

So deaktivieren Sie es

Beantworten wir nun den letzten Satz "Ich möchte, dass das Ding deaktiviert wird". Das OP möchte das Überschreiben von SSH_AUTH_SOCK durch die ssh-Komponente im Gnome-Schlüsselring deaktivieren. Sie möchten die ursprünglich von ssh-agent festgelegte Variable "true" SSH_AUTH_SOCK zurückerhalten.

Die ssh-Komponente wird mit demselben Startskript gestartet, das oben erwähnt wurde ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf), jedoch unter einer Bedingung: Die Zeichenfolge X-GNOME-Autostart-enabled=falsedarf in keiner dieser Dateien gefunden werden:

  • (systemweit conf) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (user conf) ~/.config/autostart/gnome-keyring-ssh.desktop

Wenn Sie es deaktivieren möchten, müssen Sie lediglich eine Zeile X-GNOME-Autostart-enabled=falsezu einer dieser Dateien hinzufügen , vorzugsweise zu der in Ihrem HOME-Verzeichnis.


Ich habe versucht, die Autostart-Einträge für den Gnome-Schlüsselbund zu deaktivieren, und es scheint, dass die Variable noch vorhanden ist, aber auf einen nicht vorhandenen Socket verweist (das Deaktivieren des Schlüsselbunds hat also funktioniert, aber die Variable wurde an einer anderen Stelle festgelegt). Ich verwende eine Archlinux-Maschine, daher gibt es keinen Start und es gibt nichts Offensichtliches in systemd, das die Variable setzen würde.
André Borie

@ AndréBorie Ich kenne weder Arch noch systemd. Was ist der neue Wert des Socket-Pfads? Auf meinem Macihne setzt ssh-agent normalerweise auf /tmp/ssh-XXX/agent.PID. Ist ssh-agent noch in Ihrer Prozessliste?
Xhienne

Der Weg ist genau wie in der ursprünglichen Frage. Es werden weder SSH-Agenten noch Schlüsselringe ausgeführt.
André Borie

Diese Antwort ist wirklich alt, aber ich hoffe, Sie können mir auch helfen unix.stackexchange.com/questions/422574/…
Ojs

3

https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_components

Wenn Sie einen alternativen SSH-Agenten ausführen möchten (z. B. ssh-agent oder gpg-agent), müssen Sie die ssh-Komponente von GNOME Keyring deaktivieren.

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop

Dann melden Sie sich ab.

Leicht bearbeitet, scheinbar unbrauchbare Verwendung von printf


Dies funktioniert auch bei Ubuntu 14.04.
Punkte

Dies gilt für Version 3.24 und höher.
Pablo Olmos de Aguilera C.

0

Ab Gnome 3.18 scheint der Socket in gespeichert zu sein ~/.cache/keyring-(some random string)/ssh

Vermutlich wird es von gnome-keyring-daemon gesetzt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.