山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

Windowsで起動しているDev Container内からGitのリモートリポジトリに操作を行うと Permission denied が発生する場合の対処方法

事象

  • VS CodeでDev Containerを使用し、コンテナ内からsshアクセス(GitHub操作等)を行おうとした際に Permission denied が発生する

git@github.com: Permission denied (publickey).

  • 発生しうる環境
    • Windows
    • ホストのssh-agentのバージョンが8.8以下
    • コンテナ内のssh-agentのバージョンが8.9以上

解決策

  • ホストのssh-agentのバージョンを上げる
    • winget install Microsoft.OpenSSH.Beta
    • 記事執筆時にはBetaしかなかったが winget search openssh で正式版が出ているか確認すること
  • Dev Containerのドキュメントにも注意書きがある

詳細の前置き

詳細とか詳細な手順とか

事象が発生することを確認

git@github.com: Permission denied (publickey).

ちなみに python:3.11.4 のコンテナで発生した。( Docker Hub

ssh-agentのバージョンを確認

  • ssh-agentはsshについてくるものらしいので、sshのバージョンを確認
    • ssh -V
    • ホストのWindows側( OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
      • バージョン8.8以下
      • ホストのWindows側のsshバージョン
    • Dev Container( OpenSSH_9.2p1 Debian-2, OpenSSL 3.0.9 30 May 2023
      • バージョン8.9以上
      • Dev Containerのsshバージョン
  • ホスト(Windows)でopensshの最新バージョンを調査
    • winget search openssh
    • winget search openssh
  • ホスト(Windows)にopensshをインストール
  • sshのバージョンを確認
    • ※私の環境だとインストールを行ったターミナルではだめだったので、別のターミナルを立ち上げて確認
  • Dev Container内に秘密鍵が共有されていること、エラーが発生しないことを確認

参考

code.visualstudio.com

memo

  • Gitコマンドではなく、 ssh-add -l とかの結果を記載する方が本質的だったなと思った