前置き
上記の資料を参考に、devcontainerを使う時にホスト側のgitの認証情報を使って操作できる環境を構築していたのですが、自分の環境をいろいろ汚しすぎていて予想外のところでたくさんハマったので参考になればと思い残しておきます。
結論
- 複数のGithubアカウントでsshするのをやめる
- 公開鍵はパスフレーズのない公開鍵を作る
- user.nameとuser.emailはglobalで変えておく
環境
windows + wsl2(ubuntu 22.04LTS) + docker desktop
複数のGithubアカウントでsshするのをやめる
~/.ssh/configを使って複数のgithubアカウントを使い分ける設定をしていました。
git cloneする時はgit@github.com.private:...
のようにURLを書き換えることによって使い分けるのですが、どうやらdevcontainerは~/.ssh/config
ファイルの中身まで見ていないらしく、cloneする時のURLを変えてもdevcontainer内でsshの情報がないとエラーが出ていました。
おとなしくconfigファイルのHost名をgithub
にしたらdevcontainerで認識されました!
公開鍵はパスフレーズのない公開鍵を作る
If you clone a Git repository using SSH and your SSH key has a passphrase, VS Code's pull and sync features may hang when running remotely. Either use an SSH key without a passphrase, clone using HTTPS, or run git push from the command line to work around the issue.
公開鍵をパスフレーズ付きで作成して登録していたのですが、上記資料によるとSSHキーにパスフレーズが含まれている場合ハングする可能性があるとのこと。
パスフレーズなしのキーを再作成することでSSH接続確認ができるようになりました!
user.nameとuser.emailはglobalで変えておく
devcontainerはホストのgit globalのuser情報を取得するらしく、違うユーザー名でコミットされているということがありました。思わぬところでユーザーが変わっている可能性があるので気を付けたいですねー
git config --local user.name
でも良さそうですが、最初の資料でもglobalでと書いてありましたし、おとなしく手順書に従っておくのが良さそうです
感想
devcontainer便利ですよね!ただ、一度ハマるとかなり時間を食ってしまうところがネック...
今回の設定を踏まえて、複数のgithubアカウントを切り替えてdevcontainer使うときはSSH公開鍵認証よりもHTTPS認証の方が良いかもしれないと思いました
この記事がどなたかの問題解決の参考になればと思います!
ご一読いただきありがとうございました!