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-agent
jako 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 ps
zgłasza gpg-agent --supervised
proces 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-agent
który był dostarczany z openssh.
Dokumentacja mówi, że ssh-add
należ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-keygen
do gpg-agent
i czy ktoś może wyciąć i wkleić sesję terminalową pokazującą, jak to działa?
Odpowiedzi:
Najwyraźniej odpowiedź brzmiała:
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 jakigpg-agent
zapewnia małą widoczność miejsca, w którym kopiowane są twoje sekrety. Jeśli trafisz na to pytanie, ponieważ masz nadzieję, żegpg-agent
może być lepszą alternatywąssh-agent
, zachęcam do trzymania sięssh-agent
zamiast wypróbowywania mojej odpowiedzi. Głównym powodem, dla którego warto wybrać,gpg-agent
jest konieczność korzystania z kart inteligentnych.źródło
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-add
uruchamia się, gdy jest używane z gpg-agent.Usuwanie pinentry-emacs i instalowanie pinentry GTK rozwiązało tutaj problem.
źródło