15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSL2 から起動した VSCode DevContainer に SSH agent で Git の鍵を渡す

Last updated at Posted at 2020-09-01

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 に以下を追加します。

.bash_profile
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 につながることを確認してみましょう。

参考

15
11
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?