SSH 서버가 키를 수락하지만 서명이 실패합니다.

SSH 서버가 키를 수락하지만 서명이 실패합니다.

최근 표준 SSH 공개 키 설정에서 GPG를 사용하여 키 관리로 마이그레이션을 시도했습니다. 수행원지침gpg-agent내 배포판의 위키에서는 기본 .NET 대신 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).

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

인터넷 검색 " "에 대한 일반적인 대답은 누락된 개인 키를 추가하거나 키 파일에 대한 권한을 변경하는 데 sign_and_send_pubkey: signing failed사용하는 것입니다 . ssh-add내 경우에는 gpg-agent를 사용하면 이들 중 어느 것도 도움이 되지 않는 것 같습니다. 내 키를 ssh에서 사용할 수 있는 것 같고 권한을 변경할 파일이 없습니다.

내가 걱정하는 몇 가지 사항은 다음과 같습니다.

  • 어떤 시점에서도 gpg의 pinentry에 대한 메시지가 표시되지 않습니다.
  • 공개 키는 ssh-rsa <key> (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
  • pinentry가 작동하면서 암호화/암호 해독에 대해 gpg 기능이 예상대로 작동합니다.
  • 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

영구적인 해결책을 찾지는 못했지만 이 명령은 저에게 효과적입니다. 다시 시작할 때마다 반복해야 합니다.

관련 정보