💻

wsl2+Docker環境でのVisualStudioCodeのDevContainer内でのSSHの鍵周りのお話

2021/05/01に公開

はじまり

wsl2 distro上でssh-agent使ってると、DevContainer内からでも利用可能にしてくれる機能があるが、DevContainer内でssh-add -lを試してみても

$ ssh-add -l
Could not open a connection to your authentication agent.

ssh-agentに接続出来ず。。。(wsl2 distro上では登録してあるSSHキーがリストアップされます)
色々試して調査してみた結果解決したので解決方法を残します。

調べて試した過程

zshを使っていましたが、.zshrcに

keychain id_rsa
source $HOME/.keychain/$HOST-sh

を記述していました。
色々調べてみましたがbashだとすんなりいけたという記事を見かけたので.bash_profileに

keychain id_rsa
source $HOME/.keychain/$HOSTNAME-sh

と記述しchshコマンドでbashに変更し

wsl.exe --shutdown

にて再起動しDevContainer内で再びssh-add -lコマンドを実行してみたところすんなりDevContainer内からもssh-agentに登録されたSSHキーのリストが表示されました。

結局bashでしか無理なの?

最初はそんな疑問が出ました。
引き続き調べてみた結果、.zshrcではなく.zprofileに書け!みたいな情報を発見。

keychain id_rsa
source $HOME/.keychain/$HOST-sh

という事で早速.zshrcから該当行を削除し、.zprofileへ記述してログインシェルをzshに変更して再び再起動。

無事zshでもDevContainer内でssh-agentに接続出来たようでSSHキーが使えるようになりました。

まとめ

DevContainer内でもSSHキーを使いたかったらwsl2 distro上で

  • bashなら.bash_profile内に
  • zshなら.zprofile内に
  • socatをwsl2 distro内にインストールする必要もある

keychainの設定を書く。

Discussion