korzystanie z gnome-keyring-daemon bez X

25

Zastanawiam się, czy można użyć demona gnome-keyring bez X. Zwykle wyświetla graficzny monit w celu uzyskania hasła do keyring; czy jest na to jakiś sposób? Chciałbym móc korzystać z Ubuntu One bez konieczności rozpoczynania sesji graficznej i wpisywania hasła.

intuicyjny
źródło

Odpowiedzi:

11

Możesz użyć pam_gnome_keyring.sodo uruchomienia i odblokowania demona. GDM już to robi; ponieważ loginmusisz skonfigurować go ręcznie.

Dodaj te linie do /etc/pam.d/login:

auth opcjonalne pam_gnome_keyring.so
sesja opcjonalna pam_gnome_keyring.so auto_start

Jeśli logujesz się bez hasła (SSH z Kerberos lub kluczami publicznymi), może to działać: (Nie testowałem tego)

echo -n "mojehasło" | gnome-keyring-daemon --login

(Nadal potrzebujesz uruchomionego demona - albo uruchomionego przez PAM, albo za pomocą --daemonize.)

grawitacja
źródło
Drugi przypadek ma miejsce w moim przypadku. Ta --loginopcja (nieudokumentowana?) Jest dość przydatna, chociaż na pewno nie chciałbym przechowywać mojego nieskasowanego hasła w skrypcie ani umieszczać go w wierszu poleceń. czytanie w trybie bezechowym ze skryptu (nie w języku powłoki), który następnie przekazuje te dane wejściowe do spawnowanego demona, prawdopodobnie byłby dobrym sposobem na zrobienie tego. Powinienem musiał rozpocząć ten proces tylko raz podczas rozruchu, więc warto wpisać hasło; Muszę tylko móc to zrobić w wierszu poleceń zamiast w oknie dialogowym GTK.
intuicyjnie
1
err .. nieważne, jest to udokumentowane przez gnome-keyring-daemon --help. Właśnie sprawdziłem stronę man i / usr / share / doc.
intuicyjnie
2
@intuited: Cóż, a następnie zrób coś takiego: read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --loginw skrypcie.
grawitacja
Właściwie tak, to by działało; Zapomniałem, że echo było wbudowane.
intuicyjnie
W odpowiedzi na stary komentarz @intuited: gnome-keyring-daemon --helpdaje mi dobry przegląd, ale man gnome-keyring-daemonzawiera tylko krótki opis samego programu, ale bez żadnych argumentów.
feeela
10

Streszczenie

Wymagane zadania instalacji svn z obsługą kluczy i instalacji aplikacji Collabnet keyring_tool są już wykonywane dla naszych serwerów Linux.

1) Skonfiguruj klienta SVN do korzystania z kluczy:

1.1) Edycja ~ / .subversion / config

[auth]
password-stores = gnome-keyring

1.2) Edytuj ~ / .subversion / server

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

2) Utwórz brelok do hasła. Zostaniesz poproszony o utworzenie nowego hasła, aby odblokować brelok; może to być coś, co chcesz:

keyring_tool --create=svn

3) Ustaw nowy brelok jako domyślny:

keyring_tool --setdef=svn

4) W .bash_profile lub .bash_login (zakładając, że używasz bash jako terminala)

    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) W .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

tło

Zetknąłem się z podobnym problemem podczas próby ustanowienia bezproblemowego sposobu zapewnienia autoryzowanemu użytkownikowi dostępu do niektórych repozytoriów SVN w pracy. Zasadniczo musieliśmy wymuszać sprawdzanie poświadczeń za każdym razem, gdy użytkownik uzyskuje dostęp do serwera, więc nawet polecenie aktualizacji svn wymagałoby uwierzytelnienia. Wykluczono przechowywanie haseł w postaci zwykłego tekstu, więc przy odrobinie badań natknąłem się na użycie klucza gnome jako sposobu na nękanie naszej bazy użytkowników ciągłymi żądaniami uwierzytelnienia, jednocześnie utrzymując nieautoryzowanych użytkowników poza repozytoriami, których nie powinni mieć dostępu do widoku.

Większość naszej codziennej pracy jest wykonywana przez tunele ssh do serwera RedHat bez obsługi X, więc musiałem znaleźć sposób na obejście obsługi X11. Po kilku poszukiwaniach udało mi się znaleźć sposób na obejście tego tutaj:

Materiał źródłowy

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

Kluczem tutaj jest użycie Collabnet keyring_tool do stworzenia kluczy bez klienta gnome-keyring-manager i samodzielnego uruchomienia dbus, zamiast pozwalania SVN obsługiwać konfigurację. SVN używa DBUS do łączenia się z demonem gnome-keyring i wpływa na ogólne uwierzytelnianie. Ręczne uruchamianie i burzenie sesji dbus przy użyciu -sh-składni pozwala uniknąć próby połączenia się z klientem X podczas uruchamiania dbus. Jeśli po prostu uruchomisz demona gnome-keyring i spróbujesz użyć SVN, nadal poprosi cię o hasło do klucza, ale również o podanie poświadczeń SVN. Dbus zawiedzie, gdy SVN spróbuje go uruchomić z powodu braku klienta X; najwyraźniej SVN nie używa żadnych specjalnych flag podczas uruchamiania dbus.

Stephen Gray
źródło
Dziękuję bardzo za to, wyciągając włosy, próbując pozbyć się błędu „KRYTYCZNY **: Błąd komunikacji z gnome-keyring-daemon” podczas ściągania git. Twoje zmiany w ~ / .profile i ~ / .bash_logout naprawiły to ... Nadal nie zapisuję haseł, ale jestem o krok bliżej! (Ubuntu 16.04.1 LTS)
Chris B
1

Po pierwsze, naprawdę chcesz uruchomić Ubuntu One wyłącznie z wiersza poleceń. Przejrzyj FAQ Ubuntu One . FAQ mówi , że nie jest obecnie możliwe, ale istnieją pewne narzędzia, takie jak CLI u1sdtool i u1sync . Istnieje również zestaw najczęściej zadawanych pytań na temat Ubuntu One na Launchpad; treść może być taka sama jak wcześniejszy link wiki.ubuntu.com.

Jeśli chodzi o twoje aktualne pytanie dotyczące gnome-keyring-daemon , FAQ sugeruje (1) ustawienie automatycznego logowania i (2) synchronizację hasła klucza z hasłem logowania. Byłoby to (w teorii) unikać szybka hasło, ale to będzie wymagało co najmniej podstawowym X-session być uruchomiony.

Na Launchpad znajduje się lista błędów / życzeń Ubuntu One, która żąda ułatwienia obsługi systemów bezgłowych. Najwyraźniej kompilacja ze źródła jest zalecana w przypadku lekkiej instalacji (aby uniknąć potrzeby korzystania z wszystkich bibliotek GUI i tym podobnych). Ten komentarz jest stary, ale szczególnie interesujący:

Problem polega na tym, że używamy python-gnomekeyring. Abyśmy mogli obsługiwać bezgłowy, będziemy musieli przełączyć się na brelok do pythona i obsługiwać przechowywanie tokenów w innym miejscu niż breloczek do gnomów na wyświetlaczach bezgłowych. Jednak nic takiego się nie wydarzy w przypadku opakowania Karmic, ponieważ jest zamrożone, a zmiana ta nie byłaby możliwa do zaakceptowania w SRU.

Dla Lucid powinniśmy mieć bardziej niezawodną usługę uwierzytelniania, która powinna pozwolić nam lepiej obsługiwać wyświetlacze bezgłowe.

Nie wiem, czy ta „bardziej niezawodna usługa uwierzytelniania” została rzeczywiście wdrożona dla Lucid; w oparciu o zależności pakietu wydaje się, że klient Ubuntu One nadal jest zależny od python-gnomekeyring.

quack quixote
źródło
0

Odniosłem pewien sukces, przekonując mysql-workbench do pracy z gnome-keyring w sesji SSH przekazywanej przez x. To konto korzystało z uwierzytelniania publickey (bez hasła).

Skorzystałem z dbus-run-session, aby to osiągnąć po podłączeniu do sesji ssh:

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

mam nadzieję, że ta informacja jest dla kogoś przydatna!

DrGecko
źródło
Pomogło to o krok bliżej uruchomienia mysql-workbench w kontenerze dokera i wyeksportowania ekranu do mojego hosta Mac. Kiedy próbuję dodać hasło do nowego połączenia, wyświetla mi się monit, ale po wpisaniu pwd pojawia się: „Nie można uruchomić programu org.freedesktop.secrets: Operacja niedozwolona”. Jakieś wskazówki?
Ricardo Pesciotta