2020/09/04: 「SSH agent をログイン時に起動するための設定を追加」 の記述の一部に誤りがあったため修正しました
微妙にハマったのでメモがてら共有します。
私が使用している distro は Debian ですが Ubuntu とかでもほぼ同じ感じでできると思います。
必要なパッケージをインストール
まずは WSL2 に必要なパッケージをインストールします。
$ sudo apt install openssh-client socat
socat
をインストールしておくことが重要です。コンテナから WSL のソケットに接続する際に使用されます。
SSH Key を作成
Git 接続用の SSH Key を作成します。
既にある場合は改めて作成する必要はありませんが、パスフレーズが設定されている鍵の場合 VSCode の pull や push 機能がハングする可能性があることに注意しましょう(Remote - Containers limitations を参照)。
また、鍵の暗号強度が弱いと使用するイメージによっては怒られてしまって使えないので強いアルゴリズムを使うようにしましょう。
$ ssh-keygen -t ed25519 -P ""
公開鍵は GitHub 等に登録しておきます。説明するほどのことでもないので手順については割愛します。
SSH agent をログイン時に起動するための設定を追加
ログインした際に SSH agent が起動するように .bash_profile
や .zprofile
に以下を追加します。
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`
fi
ssh-add $HOME/.ssh/id_ed25519
公式ドキュメントに記載されているものですが、少しアレンジしています。
-
.ssh/ssh-agent
を$HOME/.ssh/ssh-agent
に変更- 相対パスで書くと VSCode でワークスペースを開いた際に解決できなくて死ぬため
-
ssh-add
で秘密鍵を登録する行を追加 -
記述するファイルを.bash_profile
(.zprofile
) ではなく.bashrc
(.zshrc
) に変更VSCode の Remote WSL で接続した場合.bash_profile
(.zprofile
) だと読み込まれないためsettings.json
に"terminal.integrated.shellArgs.linux": ["-l"]
を追加することで読み込ませることもできるが、terminal でcode
コマンドが使えなくなるなどのデメリットがある- (2020/09/04 訂正) DevContainer 起動時の処理は非対話モードのシェルで行われるので
.bash_profile
(.zprofile
) が読み込まれます
DevContainer に入って確認
これで準備は整ったはずです。
VSCode の Remote WSL でリポジトリを開き、Reopen in Container
をするなどして DevContainer に入ります。
適当に git fetch
などを実行してみて remote repo につながることを確認してみましょう。