gpg-agent는 SSH 키를 거부하고 ssh-add는 "에이전트 거부 작업"을 보고합니다.

gpg-agent는 SSH 키를 거부하고 ssh-add는 "에이전트 거부 작업"을 보고합니다.

나는 아치 리눅스에서 openssh7.5p1과 gnupg 2.1.21을 사용하고 있습니다(이들은 아치와 함께 제공되는 기본 버전입니다). gpg-agentSSH 프록시 로 사용하고 싶습니다 . 나는 다음을 내 안에 넣었습니다 ~/.gnupg/gpg-agent.conf.

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

Arch는 systemd에서 gpg-agent를 자동으로 시작하므로 설정했습니다.

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

실행하면 예상대로 ssh-add -l신원이 보고되지 않고 프로세스가 ps보고됩니다 .gpg-agent --supervised

불행히도 실행하면 ssh-add키 유형이 무엇이든 작동하지 않습니다. 다음은 내가 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

다른 모든 gpg 기능은 잘 작동합니다(암호화/암호해독/서명). 또한 생성한 키는 ssh에서 직접 사용해도 잘 작동하고, ssh-agentopenssh와 함께 제공된 키를 실행해도 잘 작동합니다.

문서에는 ssh-add키를 에 추가해야 한다고 나와 있지만 ~/.gnupg/sshcontrol아무 일도 일어나지 않습니다.

내 질문: ssh-keygenopenssh에서 생성된 키를 에 로드하는 가장 쉬운 방법은 무엇입니까? gpg-agent누군가 터미널 세션을 잘라내어 붙여넣어 이것이 어떻게 작동하는지 보여줄 수 있습니까?

답변1

분명한 대답은 다음을 실행하는 것입니다.

echo UPDATESTARTUPTTY | gpg-connect-agent

pinentry 프로그램이 다른 용도(예: 파일 암호 해독)에서는 제대로 작동하지만 ssh-add.

지금은 작동하지만 아래에 표시되지 않는 ssh 개인 키의 복사본도 생성하며 gpg -Kv개인 키의 비밀번호를 변경할 수 없는 것 같습니다(ssh를 사용하여 편집할 수 없기 때문입니다). --edit-key). 기본적으로 이 접근 방식은 gpg-agent비밀이 복사되는 위치에 대한 가시성이 매우 낮기 때문에 매우 만족스럽지 않습니다 . gpg-agent더 나은 대안이 되기를 원하기 때문에 이 질문을 하시는 경우 , 제 답변을 시도하는 대신 ssh-agent계속 질문하시는 것이 좋습니다 . ssh-agent선호하는 주된 이유 gpg-agent는 스마트 카드를 사용해야 하는 경우입니다.

답변2

제 경우에는 사용된 pinentry 프로그램에 문제가 있었습니다. 나는 pinentry-emacs를 사용하고 있습니다. ssh-addgpg-agent와 함께 사용할 때 트리거되는 이중 텍스트 필드 입력 창 프롬프트를 처리하지 못하는 것 같습니다 .

pinentry-emacs를 제거하고 GTK pinentry를 설치하면 여기서 문제가 해결되었습니다.

관련 정보