最近、標準のSSH公開鍵設定でGPGを使用して鍵を管理することで移行を試みました。次のような指示するgpg-agent
私の展開wikiでは、デフォルトの.shの代わりにsshを設定しましたssh-agent
。私はすべてが大丈夫だと確信しています。~/.ssh
私のディレクトリを削除した後も、ssh-add -l
gpgで設定したキーが表示されます。
その後、リモコンの内容を~/.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
まだ永久的な解決策を見つけることができませんでしたが、このコマンドは私にとって効果的でした。再起動するたびにこの操作を繰り返す必要があります。