前回のおさらい
https://qiita.com/wing-tail/items/22f2c74b4cfdde05bc2b
WSL + hyper でゴキゲンな Linux 開発環境を手に入れた!
概要
Windows 10 Spring Creators Update (1803) でデフォルト導入されるようになった OpenSSH クライアントは、WSL からだとバグで動かなかった。
しかし、Windows 10 October 2018 Update (1809) にて直ったので、自動起動設定をしておくと作業が捗る。
前提
スタート → 設定 → システム → バージョン情報から「Windows の仕様」を確認。
バージョンが1809ならOK.
違っていたら、スタート → 設定 → 更新とセキュリティ → Windows Updateから「更新プログラムのチェック」で更新する。
方針
.bashrc に ssh-agent と ssh-add の実行を記載する。
ただし、ssh-agent による PID 等の設定をファイルに出力してやって固定化する。
これによってクライアントでシェルを複数起動した場合でも1つの ssh-agent を共有できる。
つまり、screen などを利用した際に ssh-agent が乱立することはなくなる。
設定内容
SSH_AGENT_FILE="$HOME/.ssh/ssh_agent"
# 固定化された ssh-agent 設定が存在すれば、それを読み込んで
# 既に起動している ssh-agent プロセスを再利用
[ -f $SSH_AGENT_FILE ] && source $SSH_AGENT_FILE >& /dev/null
# ssh-add がエラーを返すなら、ssh-agent プロセスが存在しないものとして
# これを起動しつつ、設定をファイルに出力
if ! ssh-add -l >& /dev/null ; then
ssh-agent > $SSH_AGENT_FILE
# ssh-agent の設定内容を標準出力してほしいなら、/dev/null へ投げなくても良い
source $SSH_AGENT_FILE >& /dev/null
# $HOME/.ssh 配下にある id_rsa という名前のファイルを ssh-add
find $HOME/.ssh -name id_rsa | xargs ssh-add
fi
注意点としては、screen の自動起動なども設定していた場合に、それより前に ssh-agent の設定を記載すること。
まあ、プロセス進行を考えれば当たり前の話だけど。
あと、秘密鍵の命名規則によって、ssh-add している箇所の記述は微調整が必要になる。
$HOME/.ssh/hogehoge/id_rsa
に統一して、hogehoge の部分を適宜変更するフォルダ単位の管理が、個人的にはベストだと思ってる。
結果
WSL(hyper)起動時に秘密鍵のパス入力したら、Windows をシャットダウンするまで、パス入力しないで秘密鍵を使えるようになった!