Windowsで公開鍵を紛失した時の対処

この記事は約3分で読めます。

経緯

管理が杜撰だったと言うしか無いのだが、いつの間にか公開鍵ファイルがなくなっていた。流石に秘密鍵はあったので(もし無くなれば各所にログイン出来なくなってすぐ気づく)、そこから再生成する。秘密鍵は公開鍵を内包しているため再生成できるのだ。

ssh-keygen

ssh-keygenという、鍵生成用コマンドが用意されているが、これの-yオプションで秘密鍵から公開鍵を生成できる。
が、

>ssh-keygen -y -f id_rsa > id_rsa.pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions

と言われてしまって生成できない。鍵の権限がオープンすぎるから先にそっちを何とかしろ、と怒られるのだ。

Linuxであればchmodでパーミッションを変更すれば良いのだが、WindowsOS(のファイルシステム)はファイルのパーミッション管理に対応しておらず、全ファイルが強制的にrwxrwxrwxとして扱われchmodが使えない(実行はできるが効果がない)。OS独自のユーザーで権限管理をしているため、パーミッション管理をする必要がないのだろう。

解決策1 : WSL

WSLと言って、Windows上でLinuxを動かす仕組みがある。これを導入してあるのであれば、WSLでchmod 600をしてそのまま前述のコマンドで再生成できる。

ただし、chmodが効かない原因はWindowsのファイルシステムなので、Win配下のファイルをWSLから扱っても効果はない。WSL上に鍵を移動してから再生成しよう。

解決策2 : VPS上に持っていく

あまり推奨できるやり方ではないが、普段から個人で使っているLinuxのVPSがあるなら、一旦そこに秘密鍵ファイルを移してWSL同様に再生成するのが楽。生成後に秘密鍵ファイルを消去することを忘れずに。

解決策3 : 再生成機能のある鍵生成ソフトを使う

PuTTYgenなどの鍵生成ソフトは、再生成機能も持っている場合がある(使い方)。このようなソフトをインストールして使うと、WSLを入れるよりも手軽に再生成できるし、身元のはっきりしたソフトであれば流出リスクもなく安心。

コメント

タイトルとURLをコピーしました