1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【悪用厳禁】EC2 にSSHキー、パスワード無しでログイン

Last updated at Posted at 2025-03-18

このIAMポリシーをユーザーにアタッチすることで、EC2 Instance Connect をサポートする様々なLinuxディストリビューションにおいて、SSHキーやパスワードなしでEC2インスタンスにセキュアにログインできるようになります。

この方法は、EC2 Instance Connect が利用可能な幅広いLinux OS で共通して利用できます。特定のOS に限定されるものではありませんので、ご自身の環境に合わせて柔軟に活用ください。

OS 互換性

EC2 Instance Connect は、以下の主要なLinuxディストリビューションを含む、多くのOS で利用可能です。

  • Amazon Linux (2023, 2, 以降)
  • Ubuntu (16.04 LTS 以降、推奨は 18.04 LTS 以降)
  • CentOS (7 以降)
  • Red Hat Enterprise Linux (RHEL) (7.4 以降)
  • Debian (9 以降)
  • SUSE Linux Enterprise Server (SLES) (12 SP3 以降)
  • Fedora (30 以降)
  • openSUSE Leap (42.3 以降)
  • Oracle Linux (7.4 以降)

前提条件

EC2 Instance Connect を利用するためには、インスタンスとユーザー側で以下の前提条件を満たす必要があります。

インスタンス側の前提条件

  • サポートされている AMI: サポート対象OS一覧 を参照してください。

  • EC2 Instance Connect エージェント: インスタンスに ec2-instance-connect パッケージがインストールされ、実行されている必要があります。(最近の公式 AMI には通常プリインストールされています)

  • サブネットのインターネットアクセス: インスタンスがパブリックIPアドレスを持つ場合はインターネットゲートウェイ、プライベートサブネットの場合はNATゲートウェイ経由でのインターネットアクセスが必要です。

  • セキュリティグループの設定: インスタンスに適用されているセキュリティグループで、アウトバウンドトラフィック を許可する必要があります。具体的な設定例:

    • 最も簡単な設定 (セキュリティリスク注意): すべてのOutboundトラフィックを許可
      • タイプ: すべてのOutboundトラフィック または すべてのトラフィック
      • プロトコル: すべて
      • ポート範囲: すべて
      • 送信先: 0.0.0.0/0

    セキュリティグループ設定手順 (AWSコンソール):

    1. EC2コンソールを開き、左メニューから「セキュリティグループ」を選択します。
    2. インスタンスに適用しているセキュリティグループを選択します。
    3. アウトバウンドのルール」タブを開き、「アウトバウンドルールを編集」をクリックします。
    4. ルールを追加」ボタンをクリックし、上記の設定例を参考にルールを追加します。
    5. ルールを保存」をクリックします。

ユーザー側の前提条件

  • IAM 権限: 接続を試みる IAM ユーザーまたはロールに、上記の IAMポリシー (JSON) がアタッチされている必要があります。
  • IAMポリシーアタッチ権限 (管理者向け): ユーザーにIAMポリシーをアタッチするためには、IAMポリシーを管理する権限が必要です。ポリシーアタッチ作業は通常、管理者権限を持つユーザーが行います。

IAMポリシー (JSON)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSSHPublicKey",
                "ec2-instance-connect:OpenTunnel"
            ],
            "Resource": "arn:aws:ec2:リージョン:アカウントID:instance/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}

ポリシーの説明

  • Version: "2012-10-17": IAMポリシーのバージョン指定です。
  • Statement: ポリシーのステートメント(権限定義)の配列です。
    • 1つ目のステートメント:
      • Effect: "Allow": 許可する設定です。
      • Action: 許可するアクションをリストで指定します。
        • ec2-instance-connect:SendSSHPublicKey: EC2 Instance Connect でインスタンスに一時的なSSH公開鍵を送信することを許可します。
        • ec2-instance-connect:OpenTunnel: EC2 Instance Connect でインスタンスへのトンネルを開くことを許可します。
      • Resource: "arn:aws:ec2:リージョン:アカウントID:instance/*": このポリシーが適用されるリソースを指定します。
        • arn:aws:ec2:リージョン:アカウントID:instance/*: 特定リージョン (リージョン) の特定アカウント (アカウントID) 内の すべてのEC2インスタンス を対象とします。
          • リージョンアカウントID は、実際にご利用のAWSリージョンとアカウントIDに置き換えてください。
          • 特定インスタンスのみに許可したい場合は、 arn:aws:ec2:リージョン:アカウントID:instance/インスタンスID のようにインスタンスIDを指定します。
    • 2つ目のステートメント:
      • Effect: "Allow": 許可する設定です。
      • Action: "ec2:DescribeInstances": EC2インスタンスの詳細情報を取得する ec2:DescribeInstances アクションを許可します。EC2 Instance Connect のコンソール画面でインスタンス一覧を表示するために必要です。
      • Resource: "*": リソースは * (すべてのリソース) を指定しています。 ec2:DescribeInstances はリソースレベルのアクセス制御が細かくないため、* で問題ありませんが、セキュリティポリシーに応じて調整してください。

IAMポリシーアタッチの手順

  1. IAMコンソールを開きます。
    • AWSマネジメントコンソールにログインし、IAMサービスを開きます。
  2. ユーザーを選択します。
    • 左側のナビゲーションメニューから「ユーザー」を選択し、ポリシーをアタッチしたいユーザー名をクリックします。
  3. 「許可を追加」をクリックします。
    • ユーザーの概要ページで、「許可」タブを開き、「許可を追加」ボタンをクリックします。
  4. 「ポリシーを直接アタッチ」を選択します。
    • 「ポリシーを直接アタッチ」を選択します。
  5. 「ポリシーの作成」をクリックします。(または既存のポリシーを検索)
    • 新しいポリシーを作成する場合は、「ポリシーの作成」ボタンをクリックします。
    • 既存のポリシーを再利用する場合は、検索ボックスにポリシー名を入力して検索し、該当するポリシーを選択してスキップしてください。
  6. ポリシー定義を入力します。
    • 「JSON」タブを選択し、上記のJSON形式のIAMポリシーをコピー&ペーストします。
    • 必ず arn:aws:ec2:リージョン:アカウントID:instance/* の部分を、ご自身の環境に合わせて修正してください。
  7. 「次へ:タグ」をクリックします。(オプション)
    • 必要に応じてタグを設定します。
  8. 「次へ:確認」をクリックします。
    • ポリシーの概要を確認し、ポリシー名を入力します (例: EC2InstanceConnect-Allow-AllInstances)。
  9. 「ポリシーの作成」をクリックします。
  10. 作成したポリシーをユーザーにアタッチします。
    • ポリシー一覧から作成したポリシーを検索し、チェックボックスをオンにします。
    • 「ポリシーのアタッチ」ボタンをクリックします。
    • 注: IAMポリシーをユーザーにアタッチするには、ユーザー自身にIAMポリシーを管理する権限(例: iam:AttachUserPolicyiam:AttachRolePolicy など)が必要です。通常は管理者権限を持つユーザーがこれらの操作を行います。

EC2 Instance Connect でのログイン方法

  1. EC2コンソールを開きます。
    • AWSマネジメントコンソールにログインし、EC2サービスを開きます。
  2. インスタンスを選択します。
    • 左側のナビゲーションメニューから「インスタンス」を選択し、ログインしたいLinuxインスタンスを選択します。
  3. 「接続」ボタンをクリックします。
    • インスタンスの詳細画面上部にある「接続」ボタンをクリックします。
  4. 「EC2 Instance Connect」タブを選択します。
  5. ユーザー名を選択します。(OSのデフォルトユーザー名)
    • OSのデフォルトユーザー名 (例: Ubuntuの場合は ubuntu、Amazon Linuxの場合は ec2-user、CentOSの場合は centos など) が選択されていることを確認します。
  6. 「接続」ボタンをクリックします。
    • 新しいブラウザウィンドウが開き、インスタンスへのターミナル接続が確立されます。

注意点

  • セキュリティ: このポリシーは、特定リージョン、特定アカウント内のすべてのEC2インスタンスへのEC2 Instance Connectアクセスを許可する広範な権限を持つポリシーです。本番環境などでは、セキュリティを考慮し、必要最小限の権限となるように、リソースを特定インスタンスに限定する、または条件キーを使用するなど、より厳格なポリシーにすることを強く推奨します。
  • 前提条件の確認: EC2 Instance Connect を利用する前に、インスタンスとユーザー側で上記の前提条件を必ず満たしていることを確認してください。詳細については、AWS公式ドキュメント をご確認ください。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?