に参加して、VS Code の AI 支援開発について学びましょう。

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 でコミットに署名したい場合は、ローカルのキーをコンテナーと共有することもできます。GitHub のドキュメントで GPG キーを使用した署名について知ることができます。

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 署名キーは Windows GUI または CLI (powershell/cmd) を使用して設定する必要があり、Git Bash では設定できません。Dev Container は、~/.gnupg/ フォルダーにあり、Windows エクスプローラーでアクセスできるにもかかわらず、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を実行する必要がある場合があります。

© . This site is unofficial and not affiliated with Microsoft.