普段Windows上で開発していて、GitHubに接続する際はssh認証を使っている人が、VSCode remote containerでcontainer内からGitHubに接続したいときのメモです。
環境
備考 | ||
---|---|---|
OS | Windows10 | |
VSCode | 1.53.2 | |
Remote - Containers | v0.158.0 | |
docker desktop for windows | 3.1.0 | |
Git Bash | git version 2.20.1.windows.1 |
また、Docker Desktop WSL 2 バックエンドを使っています。
前提
【Git】Windows環境でGitHubにSSH接続してコミットするまでの手順などを参考にC:\Users\ユーザー名\.ssh\id_rsa
などにすでに秘密鍵を作成済みで、GitHubに公開鍵を設定済みだとします。
また、GitHubへ接続できているかはGitBash上で次のように確認できます。
$ ssh -T git@github.com
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell acces
ssh-agent
ここでも書かれているように、サーバー側、今回で言えばContainer内に秘密鍵を置くのは危険です。こんなときはssh-agent
を使います。
公式リファレンス、Developing inside a Container - Using SSH keysにかかれていることをやります。
ssh-agentを起動する
Windows上のpowershellを管理者権限で実行し、ssh-agentを起動します。さらにWindows起動時に自動で立ち上がるようにしています。
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
# 起動できているかの確認
Get-Service ssh-agent
ssh-agentに秘密鍵を登録する
Windows上のpowershellで普段GitHubに接続するときに使っている秘密鍵をssh-agentに登録します。
$ ssh-add C:\Users\ユーザー名\.ssh\id_rsa
# 登録できているかの確認
$ ssh-add -l
Container上で接続確認
これでContainer内からssh接続ができるようになったと思います。Container内のターミナルで、
$ ssh-add -l
# Windows上で登録した秘密鍵がContainer内で認識できているか確認。ハッシュ値が表示されるはず。
$ ssh -T git@github.com
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell acces
これでContainer内からgit pushなどができるようになったと思います。