Windows
Git
SSH
WSL

Windows 上にある秘密鍵を、WSL 上の git から使うメモ

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