概要
- AWS EC2インスタンスへのSSH接続中に発生したエラーと、その解決手順をまとめました。
- どこかのサイトで改行コードがCRLFである問題と.pem内の記述の最終行に空行を入れたら直ったとありましたが、今回はその両者を試し
環境
- ローカル環境: Windows 10
- エディタ: SAKURAエディタ
- AWS CLI: CloudShell
発生した問題とエラー内容
エラー1: Load key "xxxxkey.pem": error in libcrypto
SSH接続時に以下のエラーが表示されました。
Load key "xxxxkey.pem": error in libcrypto
ubuntu@<インスタンスのIPアドレス>: Permission denied (publickey).
原因:
- SSHキー(
.pem
ファイル)の文字コードが不正(UTF-8 BOM付き)。 - 改行コードがWindows形式(CRLF)になっていた。
解決手順
1. キーファイルの確認
- キーファイルは UTF-8 (BOMなし) で保存します。
- 改行コードは LF に統一します。
2. キーファイルを修正
Windowsでの修正手順を以下に記載します。
SAKURAエディタを使用した修正
-
.pem
ファイルを SAKURAエディタで開きます。 -
文字コードを変更:
- メニューから「ファイル」→「名前を付けて保存」を選択。
- 「文字コード」のドロップダウンから UTF-8 (BOMなし) を選択。
-
改行コードを変更:
- メニューから「設定」→「ファイルの設定」→「改行コード」で LF を選択。
- 保存して終了します。
3. 修正後のファイルをCloudShellにアップロード
CloudShellでファイルを削除して、修正済みのキーファイルを再アップロードします。
CloudShellでの操作
rm xxxxkey.pem
アップロード後、適切な権限を設定します:
chmod 600 xxxxkey.pem
4. SSH接続の再試行
以下のコマンドで接続を試みます:
ssh -i "xxxxkey.pem" ubuntu@<インスタンスのIPアドレス>
成功時のログ例:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-1012-aws x86_64)
トラブルの原因と回避策
原因
- キーファイルの文字コードが UTF-8 BOM付き。
- 改行コードがWindows形式(CRLF)。
回避策
- キーファイルを作成・編集する際、以下の設定を使用します:
- 文字コード: UTF-8 (BOMなし)
- 改行コード: LF
- 修正後は適切なファイル権限を設定します:
chmod 600 xxxxkey.pem