Windows の Git では、SSH キーが正しいにもかかわらず、「git pull」経由で BitBucket にアクセスしようとすると、「アクセス許可が拒否されました (公開キー)」というエラーが発生します。

Windows の Git では、SSH キーが正しいにもかかわらず、「git pull」経由で BitBucket にアクセスしようとすると、「アクセス許可が拒否されました (公開キー)」というエラーが発生します。

実行中:

  • Windows 10 (最新のアップデート)

  • Git バージョン 'git バージョン 2.36.1.windows.1'

  • SSH -V は次を返します:

     OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
    

プロパティ ダイアログには、C:\Windows\System32\OpenSSH* 内のすべての実行可能ファイルが表示されます。

    product version: 8.1.0.1

(これは Windows10 が維持するデフォルトのスイートです。私自身は触ったことがありません)

  • 「ssh-agent」が起動して実行中です。「ssh-add -l」を実行すると、両方のキーが表示されます。

    3072 SHA256:.... <blahblah> (RSA)
    2048 SHA256:.... C:\foo\bar\key.ppk (RSA)
    

これらとまったく同じキーは WSL2 (Ubuntu 20.04) 内でも使用されており、問題なく動作します。

  • 私のリポジトリで「git pull」を実行しようとすると、ビットバケットrepos で次のエラーが発生します:

      permission denied (public key)'
    

まったく同じコマンドは、'ssh-agent' にロードされたまったく同じキーを使用して、Ubuntu 20.04 でも正常に動作します。何が起こっているのでしょうか?

答え1

結局、「git」は、Windows10 で組み込みの OpenSSH ライブラリを使用することに関して、BitBucket に対して何らかの不満を抱いていることが判明しました。

私は「git」を完全に再インストールすることに頼りましたが、今回はgitがWindows10自体が提供するOpenSSHスイート(gitの組み込みOpenSSHスイートではなく)を使用するようにしました。それが完了すると、すべてが意図したとおりに動作するようになりました。

PS: OpenSSH / BitBucket / Git に詳しい人なら、組み込みの「OpenSSH」スイートが動作しない理由についてさらに詳しく説明できるでしょう。今のところ、そのようなことは私の能力の範囲外です。

Gitのインストール

PS#2: この特定の設定を微調整するためだけに 'git' を再インストールしたくない場合は、以下を試してみてください (ただし、自分でテストしたわけではありません):

    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

関連情報