Windows版VSCodeで秘密鍵の位置に関係なくSSHログインするには


普段、Windows版VSCodeのリモートエクスプローラから開発する人は、sshの秘密鍵をどこに保管しているだろうか。
というのも、秘密鍵が他者から容易に見られる状態にあると、VSCodeではエラーになってサーバに接続できない。

エラーメッセージ例
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\XXXXX\\YYYYY\\zzzzzz.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "C:\\XXXXX\\YYYYY\\zzzzzz.pem": bad permissions
[email protected]: Permission denied (publickey).
プロセスが、存在しないパイプに書き込もうとしました。

なお、UNIX系(macOSを含む)だと chmod 600 で解決する。

Windowsだとユーザーフォルダの下に置くのが正解のようだが(ACLを適切に設定したら突破できるかもしれないけど未確認)、ときとして、そこに置きたくない場合もあるだろう。
そんなときはシンボリックリンクで対処できる。

そう、あまり知られていないが、Windowsもシンボリックリンクを作成できるのだ。

コマンド例
mklink C:\Users\xxxxx\.ssh\zzzzzz.pem E:\MW_Documents\開発\Aプロジェクト\設定情報\zzzzzz.pem

管理者として起動したコマンドプロンプトから投入すること。
UNIXのlnコマンドとは引数が逆になるので注意。

mklink  リンク名  実ファイル

アイコンの見た目は、ショートカットと同じになる。


「ファイル名を指定して実行」で Ctrl+Shift+Enter すると管理者で実行できる。