SSH 서버가 키를 수락하지만 서명에 실패함

SSH 서버가 키를 수락하지만 서명에 실패함

최근에 표준 SSH 공개 키 설정에서 GPG를 사용하여 키를 관리하는 것으로 마이그레이션을 시도했습니다. 다음과 같은지시하다gpg-agent내 배포 위키에서는 기본 .sh 대신 ssh를 설정했습니다 ssh-agent. 나는 모든 것이 괜찮다고 확신합니다. ~/.ssh내 디렉토리를 삭제한 후에도 ssh-add -lgpg에서 설정한 키가 나타납니다.

그런 다음 리모컨의 내용을 ~/.ssh/authorized_keys로컬 출력으로 설정 ssh-add -L하고 데몬을 다시 시작했습니다.

이제 나에게 연결된 리모컨을 사용하려고 하면 ssh -v <myremote>다음 오류가 발생합니다.

...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: (none) RSA SHA256:<myfingerprint> agent
debug1: Server accepts key: (none) RSA SHA256:<myfingerprint> agent
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Trying private key: /home/zoickx/.ssh/id_rsa
debug1: Trying private key: /home/zoickx/.ssh/id_dsa
debug1: Trying private key: /home/zoickx/.ssh/id_ecdsa
debug1: Trying private key: /home/zoickx/.ssh/id_ed25519
debug1: Trying private key: /home/zoickx/.ssh/id_xmss
debug1: No more authentication methods to try.
<myremote>: Permission denied (publickey).

분명히 서버는 내 공개 키가 승인되었다는 데 동의하지만 나에게 불분명한 이유로 계속 진행을 거부합니다.

""를 Google에 검색하는 경우 일반적인 대답 sign_and_send_pubkey: signing failedssh-add분실된 개인 키를 추가하거나 키 파일에 대한 권한을 변경하는 것입니다. gpg-agent를 사용하는 경우에는 이 중 어느 것도 도움이 되지 않는 것 같습니다. 내 키가 ssh에서 작동하는 것 같고 권한을 변경할 파일이 없습니다.

제가 걱정하는 몇 가지 사항이 있습니다:

  • gpg로부터 pinentry 프롬프트를 받은 적이 없습니다.
  • 공개 키의 형식은 ssh-rsa <key> (none)이상하게도 표준 키 대신 "none"으로 끝납니다 user@host.

내 설정에 대한 추가 정보:

  • GPG 2.2.15
  • libgcrypt 1.8.4
  • 출력 gpgconf:
gpg:OpenPGP:/usr/bin/gpg
gpg-agent:Private Keys:/usr/bin/gpg-agent
scdaemon:Smartcards:/usr/lib/gnupg/scdaemon
gpgsm:S/MIME:/usr/bin/gpgsm
dirmngr:Network:/usr/bin/dirmngr
pinentry:Passphrase Entry:/usr/bin/pinentry
  • gpg는 예상대로 암호화/해독하고 pinentry는 잘 작동합니다.
  • Gnome이나 다른 데스크탑 환경을 실행하지 않음 - dwm 사용
  • 하이마가 설치되어 있다

답변1

GPG 비밀번호를 묻는 메시지가 표시되지 않으므로 질문은아마도실행 중인 gpg-agent가 디스플레이/터미널에 액세스할 수 없습니다. GPG 버전 2.2.17을 사용하는 Mac OS 10.14(Mojave)에서 동일한 증상이 발생합니다.

gpg-agent 매뉴얼 페이지에서 해결책을 찾았습니다.

참고: gpg-agent가 서명 요청을 받으면 사용자에게 저장된 키를 해독하는 데 필요한 비밀번호를 입력하라는 메시지가 표시될 수 있습니다. ssh-agent 프로토콜에는 에이전트가 실행 중인 디스플레이/터미널을 알려주는 메커니즘이 포함되어 있지 않으므로 gpg-agent의 ssh-support는 gpg-agent가 시작한 TTY 또는 X 디스플레이를 사용합니다. 이 디스플레이를 현재 디스플레이로 전환하려면 다음 명령을 사용할 수 있습니다.

     gpg-connect-agent updatestartuptty /bye

아직 영구적인 해결책을 찾지는 못했지만 이 명령은 저에게 효과적이었습니다. 재부팅할 때마다 이 작업을 반복해야 합니다.

관련 정보