git で使う秘密鍵を、Windows と WSL で共有するときのメモ。
これをやっておくと、Windows と WSL のそれぞれの git コマンドで、秘密鍵をバラバラに管理しないで済む。
前提
秘密鍵は、Windows 上の C:\Users\<Windowsでのユーザ名>\.ssh\id_rsa
に配置する。
この秘密鍵は、WSL からは /mnt/c/Users/<Windowsでのユーザ名>/.ssh/id_rsa
として見える。
この秘密鍵を WSL 上の git から参照する。
git@WSL の設定
ターミナルは bash を使っているので、.bashrc
に追記。
.bashrc
# git が使う ssh コマンドの設定
# ここで Windows 上の秘密鍵を指定
export GIT_SSH_COMMAND="ssh -i /mnt/c/Users/<Windowsでのユーザ名>/.ssh/id_rsa"
ほぼ、これだけ。
ちなみに、上の設定は git
コマンドで使う秘密鍵だけを共有する場合で、もし git
に限らず ssh
コマンド全般に共有したければ、シンボリック リンクを作った方が楽かも。
秘密鍵のパーミッションで怒られた時の呪文
Windows 10 April 2018 Update を適用したタイミングから、秘密鍵のパーミッションで怒られるようになった気が知る。
パーミッションとオーナーを変更するためのコマンド
# 一度 Windows のボリューム?をアンマウント
$ sudo umount /mnt/c
# パーミッション管理用のメタデータが利用できる形で再マウント
$ sudo mount -t drvfs C: /mnt/c -o metadata
# 秘密鍵のオーナーを設定
$ sudo chown ${USER} /mnt/c/Users/<Windowsでのユーザ名>/.ssh/id_rsa
# 秘密鍵のパーミッションを変更
$ sudo chmod 600 /mnt/c/Users/<Windowsでのユーザ名>/.ssh/id_rsa