パブリッククラウド(等のインターネット空間)にLinuxのサーバ立てて、そこへSSH接続できるようにする場合は、
一般的に 公開鍵認証 の方式にすると思います。
で、試しに Windows の PowerShell から 以下コマンドで、実際にプライベートキーで接続可能かを試すこともあると思います。
ssh -i {キーファイルのパス} {リモートユーザ}@{接続先のIPアドレス or ホスト}
上記コマンドを試した場合に以下のような UNPROTECTED PRIVATE KEY FILE!
という表示が出て、接続できないことがあります。
PS C:\Users> ssh -i C:\SSH_KEY\my-generated-key.pem testuser@40.115.XXX.XX @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions for 'C:\\SSH_KEY\\my-generated-key.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:\\SSH_KEY\\my-generated-key.pem": bad permissions testuser@40.115.XXX.XX: Permission denied (publickey).
エラーが出る原因
対象のプライベートキーファイルは接続操作をしているユーザ以外の読み込みと書き込み操作から保護されている必要があり、
プライベートキーのファイルが対象ユーザー以外からもreadやwriteができてしまう場合に表示されるようです。
解決方法
例えば、macOS や Linux ならば chmod 600 {プライベートキーファイル}
で、対象ファイルに自分自身だけの r+w のpermission を付与すれば問題ないようです。
ただし、Windowsだとファイルの権限操作でやる方法は結構単純ではなさそうです。
WSLで chmod 600
とかやっても解決になりません。(これはそもそも WSLとWindowsのファイルシステムの絡みの関係っぽいですが)
じゃあ、Windowsで結局どうすればいいのかというと 対象のキーファイルをユーザフォルダの配下に置けば問題ないです。
こうすれば、一応Windows上の別のログインユーザからはアクセスできない。ってことでOKってことなんでしょう。
例えば以下のようなコマンドだと、問題なくSSH接続できます。
ssh -i C:\Users\yuki\Private_Key\my-generated-key.pem testuser@40.115.XXX.XX
まとめ
Windows では プライベートキーファイル のアクセス権操作でも UNPROTECTED PRIVATE KEY FILE!
による接続失敗を防ぐことはできるようですが、
ユーザフォルダ以下のどこかにプライベートキーファイルを移してしまうのが手っ取り早いです。
補足
PowerShell からの ssh コマンド接続だと冒頭に書いたエラーになっても、別のターミナルソフトウェアでのssh接続ならそもそもエラーにならない。
というパターンもあります。