🦔

devcontainer内部からGitHubへpushするアカウントを公開鍵を利用して切り替える

2022/03/06に公開

VS CodeのRemote Container拡張を使って開発するとコンテナー内部からgitを扱うこともできます。その時利用できるGitHubのアカウントを柔軟に設定したくなりました。
やりたいことはこういうことです。

+--------------+     +-----------------+     +--------+
| devcontainer | --> | Host(ssh-agent) | --> | GitHub |
+--------------+     +-----------------+     +--------+
  • hostからのpush
  • devcontainerからのpush

それぞれで異なるGitHubのアカウントを利用できるようにしたい。
ssh-agentを使います。

  1. hostのssh-agent に切り替え用アカウントの秘密鍵を登録する
  2. 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

誰かの役に立てばさいわいです。


参考サイトです。
https://ngyuki.hatenablog.com/entry/2013/12/11/003959

Discussion