コンテナと Git 認証情報を共有する
Dev Containers 拡張機能は、コンテナ内からのローカル Git 認証情報の使用をデフォルトでサポートしています。このセクションでは、サポートされている2つのオプションについて順に説明します。
ローカルでユーザー名やメールアドレスが設定されていない場合は、設定するよう促されることがあります。ローカルマシンで次のコマンドを実行して設定できます。
git config --global user.name "Your Name"
git config --global user.email "your.email@address"
拡張機能は起動時にローカルの .gitconfig ファイルをコンテナ内に自動的にコピーするため、コンテナ内でこれを行う必要はありません。
認証情報ヘルパーの使用
リポジトリのクローンに HTTPS を使用しており、ローカル OS に認証情報ヘルパーが設定されている場合、追加の設定は不要です。ローカルで入力した認証情報はコンテナ内でも再利用され、その逆も同様です。
SSH キーの使用
認証情報ヘルパーの代わりに SSH キーを使用してリポジトリをクローンする場合もあります。このシナリオを有効にするために、拡張機能はローカルの SSH エージェントが実行されている場合にそれを自動的に転送します。
まず、ホスト側で SSH エージェント転送が有効になっていることを確認する必要があります。sshd_config (通常は /etc/ssh/sshd_config または %programdata%\ssh\sshd_config にあります) で AllowAgentForwarding オプションを検索してください。まだ設定されていない場合は、yes に設定し、sshd サービスを再読み込みまたは再起動してください。
SSH エージェントが実行されている場合は、ssh-add コマンドを使用してローカルの SSH キーを追加できます。たとえば、ターミナルや PowerShell から次を実行します。
ssh-add
これにより、デフォルトのファイル (~/.ssh/id_rsa、.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519、~/.ssh/identity) が追加されます。特定のキーを指定したい場合は、コマンドの後にそのパスを追加するだけです。
Windows や Linux では、エージェントが実行されていないためにエラーが発生する場合があります (macOS では通常デフォルトで実行されています)。問題を解決するには、次の手順に従ってください。
Windows:
ローカルの管理者 PowerShell を起動し、次のコマンドを実行します。
# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
Linux
まず、ターミナルで次を実行して、バックグラウンドで SSH エージェントを起動します。
eval "$(ssh-agent -s)"
次に、ログイン時に起動するように、~/.bash_profile または ~/.zprofile (Zsh の場合) に次の行を追加します。
if [ -z "$SSH_AUTH_SOCK" ]; then
# Check for a currently running instance of the agent
RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
if [ "$RUNNING_AGENT" = "0" ]; then
# Launch a new instance of the agent
ssh-agent -s &> $HOME/.ssh/ssh-agent
fi
eval `cat $HOME/.ssh/ssh-agent` > /dev/null
ssh-add 2> /dev/null
fi
最終行の <your ssh key> をご自身の特定の SSH キーに置き換えてください。
例: ssh-add $HOME/.ssh/id_ed25519 2> /dev/null
問題が発生した場合は、Dev Containers 拡張機能の既知の制限事項を確認するとよいでしょう。
GPG キーの共有
コミットに GPG 署名を付けたい場合は、ローカルキーをコンテナと共有することもできます。GPG キーを使用した署名については、GitHub のドキュメントをご覧ください。
GPG が設定されていない場合は、お使いのプラットフォームに合わせて設定できます。
- Windows では、Gpg4win をインストールできます。
- macOS では、GPG Tools をインストールできます。
- Linux では、システムのパッケージマネージャーを使用して
gnupg2パッケージをローカルにインストールします。 - WSL の場合
- Windows 側に Gpg4win をインストールします。
- WSL ディストリビューションに
gpgをインストールします。sudo apt install gpg - WSL ディストリビューションに
pinentryGUI を登録します。echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf - WSL で
gpgエージェントを再読み込みします。gpg-connect-agent reloadagent /bye
注: Windows ユーザーの場合、gpg 署名キーは Git Bash ではなく、Windows の GUI または CLI (PowerShell/cmd) を使用して設定する必要があります。Git Bash で設定された gpg キーは、Windows エクスプローラーからアクセスできる
~/.gnupg/フォルダー内にある場合でも、Dev Container からはアクセスできません。
次に、Dockerfile を更新して、コンテナに gnupg2 をインストールします。
例えば
RUN apt-get update && apt-get install gnupg2 -y
または、非 root ユーザーとして実行している場合
RUN sudo apt-get update && sudo apt-get install gnupg2 -y
設定変更を適用するには、コンテナを再ビルドする必要があります。これを行うには、コマンドパレット (F1) から Dev Containers: Rebuild Container を実行します。次にコンテナが起動するときに、GPG キーにもコンテナ内からアクセスできるようになります。
注: 以前にコンテナ内で
gpgを使用していた場合は、更新を有効にするために Dev Containers: Rebuild Container を実行する必要がある場合があります。