gpg-agent odrzuca klucze SSH z raportowaniem ssh-add „agent odmówił operacji”

12

Używam openssh7.5p1 i gnupg 2.1.21 na arch linux (są to domyślne wersje, które są dostarczane z arch). Chciałbym użyć gpg-agentjako agenta ssh. Umieszczam w moim ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-qt
enable-ssh-support

Arch automatycznie uruchamia agenta gpg z systemd, więc ustawiłem

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"

Kiedy uruchamiam ssh-add -l, nie zgłasza żadnych tożsamości i pszgłasza gpg-agent --supervisedproces zgodnie z oczekiwaniami.

Niestety, kiedy uruchamiam ssh-add, bez względu na typ klucza, nie działa. Oto przykład tego, jak próbowałem dsa:

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation

Wszystkie pozostałe funkcje gpg działają poprawnie (szyfrowanie / deszyfrowanie / podpisywanie). Ponadto generowane przeze mnie klucze działają poprawnie, jeśli używam ich bezpośrednio z ssh, i działają poprawnie, jeśli uruchomię ten, ssh-agentktóry był dostarczany z openssh.

Dokumentacja mówi, że ssh-addnależy dodać klucze ~/.gnupg/sshcontrol, ale oczywiście nic się nie dzieje.

Moje pytanie: Jaki jest najłatwiejszy sposób załadowania klucza wygenerowanego przez openssh ssh-keygendo gpg-agenti czy ktoś może wyciąć i wkleić sesję terminalową pokazującą, jak to działa?

użytkownik3188445
źródło
Przyjęta odpowiedź pomogła mi, dziękuję za postawienie tego pytania. Zdarza mi się to od czasu do czasu, czy jest jakieś trwałe rozwiązanie?
gf_

Odpowiedzi:

27

Najwyraźniej odpowiedź brzmiała:

echo UPDATESTARTUPTTY | gpg-connect-agent

Nie mam pojęcia, dlaczego program pinentry działał dobrze dla innych zastosowań, takich jak odszyfrowywanie plików, ale nie działał ssh-add.

Chociaż teraz to działa, tworzy również kopię klucza prywatnego ssh, który nie pojawia się pod gpg -Kv, a ponadto nie wydaje się pozwalać na zmianę hasła na kluczu prywatnym (ponieważ nie można go edytować --edit-key) . Zasadniczo jestem bardzo niezadowolony ze sposobu, w jaki gpg-agentzapewnia małą widoczność miejsca, w którym kopiowane są twoje sekrety. Jeśli trafisz na to pytanie, ponieważ masz nadzieję, że gpg-agentmoże być lepszą alternatywą ssh-agent, zachęcam do trzymania się ssh-agentzamiast wypróbowywania mojej odpowiedzi. Głównym powodem, dla którego warto wybrać, gpg-agentjest konieczność korzystania z kart inteligentnych.

użytkownik3188445
źródło
Gdzie znalazłeś tę odpowiedź? Działa świetnie!
CMCDragonkai
Dzięki za to, pracował dla mnie. Czy prowadzisz to regularnie? Przy każdym uruchomieniu / logowaniu? Masz pomysł dotyczący „właściwej” poprawki?
gf_
2

W moim przypadku problemem był zastosowany program pinentry. Użyłem emalii pinentry. Wygląda na to, że nie obsługuje podwójnego okna wprowadzania pola tekstowego, które ssh-adduruchamia się, gdy jest używane z gpg-agent.

Usuwanie pinentry-emacs i instalowanie pinentry GTK rozwiązało tutaj problem.

użytkownik30747
źródło
To ostatecznie rozwiązało mój problem po znalezieniu kilku źródeł, które kazały mi zaktualizować tty startowy.
William Rosenbloom