長いタイトルになってますけど、タイトルの辺りで詰まったので書いてみます。

要約


ちょっとタイトルがごちゃっとしてるので、書きたいことを箇条書きするとこんな感じ。

  • Bash on WindowsでSSH公開鍵認証をしたかった
  • しかし、Windowsのファイルシステム(NTFS)だとLinux系のパーミッションが設定できない
  • mnt/ドライブ以外の場所に鍵を作るとBash on WindowsでSSH公開鍵認証できるよ

mnt配下だとパーミッションが…


WindowsでSSH公開鍵認証をやる場合ってC/Users/ユーザー/.ssh配下に鍵を保存することが多いと思います。
しかしmnt/ドライブ配下でBash on Windowsなどでパーミッションを見てみると一部を除いて0555になってると思います。

これの何がアカンのか。mnt/ドライブ配下に置いている秘密鍵をつかってSSH公開鍵認証をやろうとすると下記のような感じで怒られる。

1
2
3
4
5
6
7
8
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0555 for 'private.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: private.pem
vagrant@192.168.33.10's password:

じゃあ、chmodでパーミッション変えればええやん?ってなるでしょう。でもchmodでパーミッション変更できません。
じゃあ、Linuxで作成して、適切なパーミッションに変更したものをコピーしてくれば…というわけにもいきません。mnt/ドライブ配下にコピーした時点でパーミッションが0555に書き換わります。

どうすんねん…


mnt/ドライブ以外の場所で鍵を作ります。具体的には/home/ユーザー/.sshとかでしょう。
こうすると、あとは/home/ユーザー/.sshの秘密鍵を使ってSSH公開鍵認証をすればよいです。

ついついC/Users/ユーザー/.sshに作成したものを使おうとしてちょっと詰まったという話でした。

参考


Connecting to Amazon EC2 Instance on Windows 10 bash - Permission denied (publickey) [closed]