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 ディストリビューションに
pinentry
GUI を登録します。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) を使用して設定する必要があります。Dev Container は、
~/.gnupg/
フォルダー内にあり、Windows Explorer でアクセスできる場合でも、Git Bash で設定された GPG キーにはアクセスできません。
次に、Dockerfile を更新してコンテナーに gnupg2
をインストールします。
例
RUN apt-get update && apt-get install gnupg2 -y
または、非ルートユーザーとして実行している場合
RUN sudo apt-get update && sudo apt-get install gnupg2 -y
設定変更を適用するには、コンテナーを再ビルドする必要があります。コマンドパレット (F1
) から Dev Containers: Rebuild Container を実行することでこれを行うことができます。次回コンテナーが起動するときに、GPG キーもコンテナー内でアクセスできるようになります。
注: 以前にコンテナーで
gpg
を使用していた場合、更新を有効にするには Dev Containers: Rebuild Container を実行する必要がある場合があります。