Amazon EC2 の使用時に発生する
「server refused our key (サーバーはキーを拒否しました)」エラーのトラブルシューティングを
Louisa がお手伝いします。

Loiusa_ec2-server-refused-our-key-1

SSH を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続することができず、「Server refused our key (サーバーはキーを拒否しました)」エラーが発生しました。どのように解決すればよいですか?

次の場合、EC2 インスタンスにログインできないことがあります。

  • SSH プライベートキーを使用しているが、対応するパブリックキーが authorized_keys ファイルにない。
  • authorized_keys ファイルにアクセスする権限がない。
  • .ssh フォルダにアクセスする権限がない。
  • authorized_keys ファイルまたは .ssh フォルダの名前が正しくない。
  • authorized_keys ファイルまたは ssh フォルダが削除されている。
  • インスタンスがキーなしで作成されたか、正しくないキーで作成された。

「Server refused our key (サーバーはキーを拒否しました)」エラーが発生した後に EC2 インスタンスに接続するには、インスタンスのユーザーデータを更新して、指定された SSH パブリックキーを authorized_keys に付加します。このファイルは、SSH ディレクトリおよびその中に保存されるファイルの適切な所有権およびファイルのアクセス権を設定するファイルです。

インスタンスのユーザーデータを更新する手順を開始する前に、以下に注意してください。

  • ホームディレクトリのアクセス権に問題がある場合、この手順で問題が解決されることはありません。ホームディレクトリのアクセス権は手動で修正する必要があります。
  • この手順は、cloud-init ディレクティブをサポートするすべてのディストリビューションに適用されます。これらの手順を行うには、cloud-init をインストールして設定する必要があります。cloud-init SSH module の詳細については、「Configure ssh and ssh keys」を参照してください。
  • この手順の開始時にインスタンスを停止する必要があります。エフェメラルボリュームのデータはすべて失われます。
  • インスタンスのルートデバイスがインスタンスストアボリュームである場合、この手順を使用して SSH キーを変更することはできません。

次の手順に従い、インスタンスのユーザーデータを更新して、指定された SSH パブリックキーを authorized_keys ファイルに付加します。

1.    Amazon EC2 コンソールで、インスタンスを選択します。

2.    [Actions (アクション)] を選択し、[Instance State (インスタンスの状態)]、[Stop (停止)] の順に選択します。注: [Stop (停止)] が無効になっている場合、インスタンスがすでに停止しているか、またはルートデバイスがインスタンスストアボリュームかのいずれかです。インスタンスのルートデバイスがインスタンスストアボリュームである場合、この手順を使用して SSH キーを変更することはできません。

3.    接続元のオペレーティングシステムに応じて、次のいずれかの方法で SSH パブリックキーを見つけます。

Linux 次のようなコマンドを実行します。

# ssh-keygen -y -f /path/to/keypair.pem

Windows PuTTYGen を開きます。次に .PEM ファイルをロードします。パブリックキーが、[Public key for pasting into OpenSSH authorized_keys file (OpenSSH authorized_keys ファイルにペーストするためのパブリックキー)] ボックスに表示されます。

4.    SSH パブリックキーをメモします。パブリックキーは後のステップで必要になります。

5.    Amazon EC2 コンソールに戻り、インスタンスを選択します。

6.    [Actions (アクション)] を選択し、[Instance Settings (インスタンスの設定)]、[View/Change User Data (ユーザーデータの表示/変更)] の順に選択します。

7.    [View/Change User Data (ユーザーデータの表示/変更)] ダイアログボックスで、ユーザーデータに次のスニペットを入力します。注意: ssh-rsa の値として、SSH パブリックキーを入力します。値はパブリックキーと一致する必要があり、スペースや文字を追加することはできません。

#cloud-config
ssh_deletekeys: false
ssh_authorized_keys:
  - ssh-rsa ENTER YOUR PUBLIC KEY HERE ...
cloud_final_modules:
  - [ssh, always]

8.    [Save (保存)] を選択します。

9.    [Actions (アクション)] を選択し、[Instance State (インスタンスの状態)]、[Start (開始)] の順に選択します。

インスタンスの開始後、ユーザー名でログインできます。Amazon Linux、RHEL、Ubuntu、CentOS、Fedora、および SUSE Amazon マシンイメージ (AMI) のユーザー名のリストについては、「Linux インスタンスへの接続」を参照してください。それ以外の場合で、ec2-user および root が機能しない場合は、ご利用の AMI プロバイダーに確認してください。

注意: デフォルトでは、ユーザーデータスクリプトは、各インスタンスに対して 1 回実行されます。この手順により、インスタンスの再起動、停止、開始ごとにパブリックキーを追加するようにデフォルトの動作が変更されます。デフォルトの動作に戻すには、カスタムユーザーデータを削除します。ベストプラクティスとして、インスタンスの最初の起動後にユーザーデータが実行できることによるセキュリティへの影響を考慮します。ModifyInstanceAttribute API メソッドを使用してインスタンスのユーザーデータを変更できます。このメソッドへのアクセスを制限するには、AWS Identity and Access Management (IAM) ポリシーを使用します。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 2 月 26 日

更新: 2018 年 5 月 21 日