web-dev-qa-db-ja.com

sign_and_send_pubkey:署名に失敗しました:エージェントが操作を拒否しました

Xubuntu 16.04をxfceで実行して、パスフレーズでssh鍵を使用しようとしています。パスフレーズのキーをssh-agentに追加したいのですが、なぜ追加できないのかわかりません。私のスタートアップでは、gnomeキーリングなどを有効にしていません。 ssh-add privatekey、キーを追加しますが、もう一度sshしようとすると、エラーが2回出力されます。いくつかの修正では、起動時にgnomeキーリングを無効にするように言われていますが、すでに無効にしています。これはすべて、raspberrypiのsshキーを置き換えたときに発生しました。

enter image description here

> OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/potato/.ssh/config
debug1: /home/potato/.ssh/config line 1: Applying options for paj
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 111.229.105 [111.229.105] port 22253.
debug1: Connection established.
debug1: identity file /home/potato/.ssh/hplaptop_to_pi type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/potato/.ssh/hplaptop_to_pi-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Raspbian-5+deb8u3
debug1: match: OpenSSH_6.7p1 Raspbian-5+deb8u3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 111.229.105:22253 as 'pi'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: Host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ecdsa-sha2-nistp256 SHA256:zrjeaaHD8TjzsdsdssssA2fXnG3gxp2U
debug1: Host '[111.229.105]:22253' is known and matches the ECDSA Host key.
debug1: Found key in /home/potato/.ssh/known_hosts:2
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/potato/.ssh/hplaptop_to_pi
debug1: Server accepts key: pkalg ssh-rsa blen 535
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Offering RSA public key: potato@potato-HP-tomato
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: potato@hplaptop
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: potato@hplaptop
debug1: Server accepts key: pkalg ssh-rsa blen 535
sign_and_send_pubkey: signing failed: agent refused operation
debug1: Offering RSA public key: rsa-key-20141222
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: potato@potatolaptop
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
4
strudelj nudelj

何時間にもわたるグーグルと助けの後で、問題は明らかになりました。私はssh-keygenでssh鍵を生成していて、openSSHの新しい形式で鍵を生成する追加の引数「-o」を追加しました。問題は、キーにEd255519署名方式があったため、私のgnome-keyringがそのようなキーをサポートしていないことでした。 Gnome-keyringは3.20以降、これをサポートしていません。 RSAに戻したところ、問題は解決しました。

8
strudelj nudelj

〜/ .sshディレクトリとそれに含まれるファイルの権限を変更する際のヒントとして、このような問題を解決するための多くの提案があります。これについての詳細: https://Gist.github.com/grenade/6318301

問題を解決しない可能性があり、冗長になる可能性があるssh-addを提案する人もいます。

上記の両方を試しても、この問題は解決しませんでした。代わりに、問題は私が生成していたsshキーのタイプにありました。

@strudelj nudeljが述べたように、公開鍵で使用されている暗号化タイプが接続先のサーバーでサポートされているかどうかを確認することが重要です。たとえば、私が試みていたgitlabサーバーは、通常~/.ssh/id_dsa.pubに格納されているキーのタイプをサポートしていませんでした

代わりに、ed25519またはrsa暗号化キーが必要でした。

ed25519の場合、$ssh-keygen -t ed25519 -C "[email protected]"を使用してキーを生成できます

次に、$ssh -T user@serverは、このキーが受け入れられ、接続を確立できるかどうかを適切にチェックする必要があります。

1
speck_of_dust

私の場合の問題は、GNOMEキーリングが使用するsshキーの無効なパスフレーズを保持していたことでした。この問題のトラブルシューティングにまともな時間を費やした後、seahorseを実行したところ、空の文字列を保持するエントリが見つかりました。

最初の使用でパスフレーズを誤って入力し、コマンドラインにフォールバックするためにおそらくリクエスタなどをキャンセルしたことが原因であると推測できます。

  • 正しいパスフレーズでエントリを更新すると、すぐに問題が解決しました。

  • (「ログイン」キーリングから)そのエントリを削除し、最初のプロンプトでパスフレーズを再入力すると(適切なチェックボックスをオンにすると)、これも解決されます。

これで、エージェントは「login」という名前のロック解除されたログインキーリングから正しいパスフレーズを取得し、パスフレーズを要求したり、「操作を拒否」したりしなくなりました。もちろんYMMV。

1
silverdr