Gdzie zestaw kluczy gnomów ustawia $ SSH_AUTH_SOCK?


10

Jestem w trakcie pozbywania się gnome-keyringjako agent SSH.

Rzeczy, które zrobiłem

  • Przeszukiwałem internet godzinami.
  • Często zmieniałem i restartowałem.
  • W końcu właśnie rmusunąłem wszystkie rzeczy związane z autostartem związane z SSH.

Ta ostatnia rzecz działała magicznie, ponieważ nie ma już gniazda dla agenta:

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

Problem

Pozostałą problemem jest to, że pomimo mojego uzyskania wspaniałego wspomniany wynik, coś w gnome-keyringdalszym ciągu nalega na ustawienie SSH_AUTH_SOCKdo już nieistniejącego gniazda powyżej. To jak zombie, te rzeczy nigdy nie umierają.

Pytanie

Co to jest ustawienie tej zmiennej i gdzie to się dzieje?

Pułapki

  • Ja nie pytając, jak mogę przywrócić tę zmienną na inną wartość.
  • Ja nie pytając, jak mogę ustawić tę wartość dla całego systemu lub w pliku konfiguracyjnym powłoki.
  • Ja nie pytając dla niektórych zaklęć skrypty startowe voodoo zamrozić, set, reset, wyłączony lub wymienić wszystko.
  • Ja nie z prośbą o poradę, w jaki sposób odinstalować rzeczy: nadal muszę go dla moich haseł i wydaje się być najbardziej zintegrowany i polerowane menedżer haseł w Gnome.

Chcę, aby ta rzecz była wyłączona tak, jak powinna.


2
Odinstalować gnome-keyring?
rudimeier

1
@rudimeier: Nadal potrzebuję kluczy gnome do moich haseł i o ile wiem, nic więcej nie jest dopracowane i zintegrowane w Gnome.
JohnW,

@ rudimeier nawet to nie pomaga. Próbowałem
André Borie,

Odpowiedzi:


8

Niech zgadnę - używasz Waylanda. Wpadłem dziś na ten problem i pomyślałem, że podzielę się rozwiązaniem.

SSH_AUTH_SOCKZ jakiegoś powodu Sesja Gnome ma zakodowane na stałe ustawienie w terenie. Zobacz następujące zatwierdzenie: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

Obejście? Ustawić zmienną środowiskową, aby wyłączyć to zachowanie: GSM_SKIP_SSH_AGENT_WORKAROUND=1. Spowoduje to zwarcie kodu ustawienia środowiska.

Dla osób, które to znajdą, i próbują również skonfigurować ssh-agent: W moim pliku systemd jednostki dla ssh-agent mam następujący wiersz:

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

Pełny plik wygląda następująco:

[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

Dzięki! Na Ubuntu 17.10 Artful Aardvark, po prostu dodanie export GSM_SKIP_SSH_AGENT_WORKAROUND=1do mojego ~ / .profile i ponowne uruchomienie naprawiło moją konfigurację, która wcześniej działała w wersji 17.04.
Stephen Niedzielski

Wydaje się, że wpływa to nie tylko na Waylanda, ale wpadłem na to, próbując użyć gnome-flashback + i3.
dragon788,

Należy pamiętać, że hack działa do Gnome 3.24 lub starszego ( wiki.archlinux.org/index.php/GNOME/… )
Pablo Olmos de Aguilera C.

5

(Środowisko OP nie jest znane, więc podane tutaj ścieżki to te, które można znaleźć na moim komputerze Ubuntu)

Gdzie ustawia breloczek do gnomów SSH_AUTH_SOCK?

Aby odpowiedzieć na główne pytanie w tytule, SSH_AUTH_SOCK jest ustawiany przez gnome-keyring /usr/share/upstart/sessions/gnome-keyring-ssh.confza pomocą następującego polecenia:

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

Cytując initctlinstrukcję:

initctl set-env VARIABLE[=VALUE]

Dodaje lub aktualizuje zmienną w tabeli środowiska pracy. Ustawione w ten sposób zmienne będą miały zastosowanie do wszystkich późniejszych procesów uruchamiania zadania.

-g, --global

Operuj na globalnej tabeli środowiska pracy i wszystkich istniejących działających tabelach środowiska pracy.

Skąd bierze się SSH_AUTH_SOCK?

Powyższe initctlpolecenie jest uwarunkowane tym, że zmienna środowiskowa SSH_AUTH_SOCK już istnieje. Czy to jest sytuacja z kurczakiem i jajami? Co to ustawia?

SSH_AUTH_SOCK jest początkowo ustawiany przez oryginalnego agenta ssh, który jest uruchamiany na samym początku sesji X. Cytując instrukcję:

Zostanie utworzone gniazdo domeny UNIX, a nazwa tego gniazda zostanie zapisana w SSH_AUTH_SOCKzmiennej środowiskowej. Gniazdo jest dostępne tylko dla bieżącego użytkownika.

ALE to, co robi ssh-keyring gnome-keyring, to zastąpienie się istniejącym ssh-agentem. Dlatego zastępuje SSH_AUTH_SOCK swoim własnym gniazdem /run/user/.../keyring-.../ssh, aby aplikacje mogły z nim rozmawiać, a nie ssh-agent.

Jak to wyłączyć?

Teraz odpowiedzmy na ostatnie zdanie: „Chcę wyłączyć tę rzecz”. OP chce wyłączyć nadpisywanie SSH_AUTH_SOCK przez komponent ssh w gnome-keyring. Chcą odzyskać „prawdziwą” zmienną SSH_AUTH_SOCK ustawioną początkowo przez ssh-agent.

Składnik ssh jest uruchamiany przez ten sam skrypt startowy, o którym mowa powyżej ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf), ale pod jednym warunkiem: ciągu X-GNOME-Autostart-enabled=falsenie można znaleźć w żadnym z tych plików:

  • (conf całego systemu) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (konf. użytkownika) ~/.config/autostart/gnome-keyring-ssh.desktop

Dlatego jeśli chcesz go wyłączyć, wystarczy dodać wiersz X-GNOME-Autostart-enabled=falsedo jednego z tych plików, najlepiej ten w katalogu HOME.


Próbowałem wyłączyć wpisy autostartu dla kluczy Gnome i wydaje się, że zmienna wciąż tam jest, ale wskazuje na nieistniejące gniazdo (więc wyłączenie kluczy działało, ale zmienna jest ustawiona gdzie indziej). Używam maszyny Archlinux, więc nie ma rozruchu i nie ma w systemie nic oczywistego, co ustawiłoby zmienną ..
André Borie

@ AndréBorie Nie znam ani Arch, ani systemd. Jaka jest nowa wartość ścieżki gniazda? Na moim macihne ssh-agent zazwyczaj ustawia to na /tmp/ssh-XXX/agent.PID. Czy ssh-agent jest nadal na twojej liście procesów?
xhienne

Ścieżka jest taka jak w pierwotnym pytaniu. Nie działają agenci SSH ani breloki do kluczy.
André Borie,

Ta odpowiedź jest naprawdę stara, ale mam nadzieję, że możesz mi pomóc. Unix.stackexchange.com/questions/422574/...
Ojs,

3

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

Jeśli chcesz uruchomić alternatywnego agenta SSH (np. Ssh-agent lub gpg-agent, musisz wyłączyć komponent ssh w GNOME Keyring. Aby to zrobić w sposób lokalny dla konta:

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

Następnie wyloguj się.

Lekko zredagowany, usuwający pozornie bezużyteczne użycie printf


Działa to również dla mnie na Ubuntu 14.04.
pkt

Dotyczy to wersji 3.24 i nowszych.
Pablo Olmos de Aguilera C.

0

Począwszy od Gnome 3.18, gniazdo wydaje się być przechowywane w ~/.cache/keyring-(some random string)/ssh

Domyślamy się, że jest ustawiany przez gnome-keyring-daemon.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.