経緯
管理が杜撰だったと言うしか無いのだが、いつの間にか公開鍵ファイルがなくなっていた。流石に秘密鍵はあったので(もし無くなれば各所にログイン出来なくなってすぐ気づく)、そこから再生成する。秘密鍵は公開鍵を内包しているため再生成できるのだ。
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を入れるよりも手軽に再生成できるし、身元のはっきりしたソフトであれば流出リスクもなく安心。
コメント