🦔
devcontainer内部からGitHubへpushするアカウントを公開鍵を利用して切り替える
VS CodeのRemote Container拡張を使って開発するとコンテナー内部からgitを扱うこともできます。その時利用できるGitHubのアカウントを柔軟に設定したくなりました。
やりたいことはこういうことです。
+--------------+ +-----------------+ +--------+
| devcontainer | --> | Host(ssh-agent) | --> | GitHub |
+--------------+ +-----------------+ +--------+
- hostからのpush
- devcontainerからのpush
それぞれで異なるGitHubのアカウントを利用できるようにしたい。
ssh-agentを使います。
- hostのssh-agent に切り替え用アカウントの秘密鍵を登録する
- devcontainer に登録した公開鍵を追加する
container内部でgitを使いたいのでDockerfileでOSのパッケージマネージャーを使ってインストールするようにしてください。
1. hostのssh-agent に切り替え用アカウントの秘密鍵を登録する
GitHubの切り替え用アカウントに登録した公開鍵の秘密鍵をssh-agentに登録します。
ssh-add ~/.ssh/id_ed25519_sample_account
2. devcontainer に登録した公開鍵を追加する
devcontainer.json で postCreateCommand に読み込ませる ShellScript を用意して以下を追加します。
# git config
git config --global user.email 'emailadress'
git config --global user.name 'username'
mkdir -p ~/.ssh/
curl -s -o ~/.ssh/id_ed25519 "https://github.com/$(git config --global --get user.name).keys"
git config --global
で設定を追加するとHostの ~/.gitconfig
はコピーされないので必要な設定は個別に行います。
その後コンテナーをrebuildして、コンテナー内のsshコマンドで接続確認して使いたいアカウントが表示されていれば完了です。
ssh -v git@github.com
誰かの役に立てばさいわいです。
参考サイトです。
Discussion