SSHサーバーが鍵を受け入れるが署名に失敗する

SSHサーバーが鍵を受け入れるが署名に失敗する

最近、標準のSSH公開鍵設定でGPGを使用して鍵を管理することで移行を試みました。次のような指示するgpg-agent私の展開wikiでは、デフォルトの.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 failedは、ssh-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

まだ永久的な解決策を見つけることができませんでしたが、このコマンドは私にとって効果的でした。再起動するたびにこの操作を繰り返す必要があります。

おすすめ記事