LightsailにSSHログインできない

AWS

新しいパソコンで、これまで普通にTeratermログインできていたLightsailインスタンスにログインできなくなりました。

対応方法を再確認

Geminiで対応方法を再確認すると、下記が得られました。

1. Tera Term のバージョン確認(最有力)

最近のLinux OSはセキュリティが強化されており、古い暗号化方式(ssh-rsaなど)を廃止しています。もし、あなたのTera Termがバージョン 4.xx を使っている場合、新しいOSに接続しようとすると、何も言わずに切断されることがあります。

  • 確認: Tera Termのメニュー「ヘルプ」→「Tera Termについて」を確認してください。
  • 対策: もし 4.xx であれば、最新の Tera Term 5.xx をダウンロードしてインストールし直してください。これで解決するケースが非常に多いです。

2. Windows標準のコマンドプロンプトで試す(原因切り分け)

Tera Termの問題なのか、ネットワークの問題なのかをはっきりさせるために、Windowsに標準搭載されているコマンドで接続テストをします。これでエラーが出れば、ネットワークやキーの問題だと確定できます。

  1. 秘密鍵ファイル(.pem)を、わかりやすい場所(例:デスクトップ)に置きます。
  2. Windowsの検索バーに cmd と入力して「コマンドプロンプト」を起動します。
  3. 以下のコマンドを入力して Enter を押してください。 (ユーザー名 IPアドレス 鍵のパス はご自身のものに書き換えてください)DOSssh -i "C:\Users\あなたの名前\Desktop\LightsailDefaultKey.pem" ec2-user@123.45.67.89 (※ユーザー名は ec2-userbitnami など、OSに合わせてください)

コマンドプロンプトの結果

下記結果でした。

Permissions for ‘C:\work\info\LightsailDefaultKey-ap-northeast-1.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:\work\info\LightsailDefaultKey-ap-northeast-1.pem”: bad permissions
ec2-user@54.65.229.188: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

対策

WindowsのSSHクライアントは、鍵の権限が厳密に設定されていないと、「他のユーザーに読み取られる可能性がある」と判断し、**秘密鍵を無視(無視)**します。その結果、「Permission denied (publickey)」となって接続できません。

✅ 解決策:秘密鍵の権限設定 (最も重要)

以下の手順で、LightsailDefaultKey-ap-northeast-1.pem ファイルのアクセス権を「所有者(あなた)」だけに設定し直してください。

  1. エクスプローラーで秘密鍵ファイル (C:\\work\\info\\LightsailDefaultKey-ap-northeast-1.pem) があるフォルダを開きます。
  2. 秘密鍵ファイルを右クリックし、「プロパティ」を選択します。
  3. セキュリティ」タブをクリックします。
  4. 詳細設定」ボタンをクリックします。
  5. ウィンドウ上部にある「継承を無効にする」ボタンをクリックします。
  6. ポップアップが表示されたら「継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します」を選択します。
  7. 元の「詳細なセキュリティ設定」のウィンドウに戻ったら、一覧から全てのユーザを選択し、「削除」**ボタンで削除します。
  8. 追加ボタンを押下して、あなたのログインユーザ名を入力し、読み取りのみチェックを付けて保存
  9. 「適用」→「OK」を押して、すべてのウィンドウを閉じます。

この設定をすることで、SSHクライアントが鍵の権限を確認し、安全であると判断して使用できるようになります。

これで、アクセスできました。

マクロからのアクセス

下記のようなマクロファイルをttlという拡張子で保存し、Teratermマクロで実行できるようにしたほうが良い。 (次回からこの拡張子はTeratermマクロが実行されるようにする)

HOSTADDR = ‘<ipアドレスやホスト>’
USERNAME = ‘ec2-user’
KEY_FILE = ‘<pemファイル>’
COMMAND = HOSTADDR
strconcat COMMAND ‘:22 /ssh /2 /auth=publickey /user=’
strconcat COMMAND USERNAME
strconcat COMMAND ‘ /keyfile=’
strconcat COMMAND KEY_FILE
connect COMMAND
end

しばらくすると、また接続できなくなった・・・

ver5.5の設定がすごくたくさんあるので、これのいづれかを更新したら、また接続できそうな気もするが、もうあきらめて、コマンドラインからのssh実行へ切り替え。

C:\Users\<ユーザ名>\.ssh\config

というファイルに、

Host Server1
  HostName <ipやホスト名>
  User ec2-user
  IdentityFile ~/.ssh/<pemファイル名>.pem
  
Host Server2
  HostName <ipやホスト名>
  User ec2-user
  IdentityFile ~/.ssh/<pemファイル名>.pem
  

という内容を記載すると、コマンドラインから

ssh Server1

で、ssh接続ができる

コメント

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