

# インスタンス用 EC2 シリアルコンソール
<a name="ec2-serial-console"></a>

EC2 シリアルコンソールを使用すると、Amazon EC2 インスタンスのシリアルポートにアクセスできます。このシリアルポートを使用して、起動、ネットワーク設定、およびその他の問題をトラブルシューティングできます。シリアルコンソールではインスタンスにネットワーク機能を持たせる必要はありません。シリアルコンソールを使用すると、キーボードとモニターがインスタンスのシリアルポートに直接接続されているかのように、インスタンスにコマンドを入力できます。シリアルコンソールセッションはインスタンスの再起動中および停止中も継続します。再起動中は起動時のすべてのブートメッセージを表示できます。

デフォルトではシリアルコンソールにアクセスできません。組織はアカウントにシリアルコンソールへのアクセスを許可し、IAM ポリシーを設定して、ユーザーにシリアルコンソールへのアクセスを許可する必要があります。シリアルコンソールへのアクセスはインスタンス ID、リソースタグ、その他の IAM レバーを使用して、きめ細かいレベルで制御できます。詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。

シリアルコンソールにはEC2 コンソールまたは AWS CLI を使用してアクセスできます。

シリアルコンソールは追加料金なしで利用できます。

**Topics**
+ [

# EC2 シリアルコンソールの前提条件
](ec2-serial-console-prerequisites.md)
+ [

# EC2 シリアルコンソールへのアクセスを設定する
](configure-access-to-serial-console.md)
+ [

# EC2 シリアルコンソールに接続する
](connect-to-serial-console.md)
+ [

# EC2 シリアルコンソールからの切断
](disconnect-serial-console-session.md)
+ [

# EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする
](troubleshoot-using-serial-console.md)

# EC2 シリアルコンソールの前提条件
<a name="ec2-serial-console-prerequisites"></a>

**Topics**
+ [

## AWS リージョン
](#sc-prereqs-regions)
+ [

## Wavelength ゾーンと AWS Outposts
](#sc-prereqs-wavelength-zones-outposts)
+ [

## ローカルゾーン
](#sc-prereqs-local-zones)
+ [

## インスタンスタイプ
](#sc-prereqs-instance-types)
+ [

## アクセス権を付与する
](#sc-prereqs-configure-ec2-serial-console)
+ [

## ブラウザベースのクライアントのサポート
](#sc-prereqs-for-browser-based-connection)
+ [

## インスタンスの状態
](#sc-prereqs-instance-state)
+ [

## Amazon EC2 Systems Manager
](#sc-prereqs-ssm)
+ [

## トラブルシューティングツールを選択
](#sc-prereqs-configure-troubleshooting-tool)

## AWS リージョン
<a name="sc-prereqs-regions"></a>

アジアパシフィック (台北) を除くすべての AWS リージョン でサポートされています。

## Wavelength ゾーンと AWS Outposts
<a name="sc-prereqs-wavelength-zones-outposts"></a>

サポート外。

## ローカルゾーン
<a name="sc-prereqs-local-zones"></a>

すべての Local Zones ではサポートされています。

## インスタンスタイプ
<a name="sc-prereqs-instance-types"></a>

サポートされるインスタンスタイプ:
+ **Linux**
  + Nitro システム上に構築されたすべての仮想化インスタンス。
  + 以下を除くすべてのベアメタルインスタンス:
    + 汎用: `a1.metal`, `mac1.metal`, `mac2.metal` 
    + 高速コンピューティング: `g5g.metal`
    + メモリ最適化: `u-6tb1.metal`, `u-9tb1.metal`, `u-12tb1.metal`, `u-18tb1.metal`, `u-24tb1.metal` 
+ **Windows**

  Nitro システム上に構築されたすべての仮想化インスタンス。ベアメタルインスタンスではサポートされていません。

## アクセス権を付与する
<a name="sc-prereqs-configure-ec2-serial-console"></a>

EC2 シリアルコンソールへのアクセス権を付与する設定タスクを完了する必要があります。詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。

## ブラウザベースのクライアントのサポート
<a name="sc-prereqs-for-browser-based-connection"></a>

[ブラウザベースのクライアントを使用して](connect-to-serial-console.md#sc-connect-browser-based-client)シリアルコンソールに接続するにはそのブラウザで WebSocket をサポートしている必要があります。お使いのブラウザが WebSocket をサポートしていない場合は[独自のキーとSSH クライアントを使用して](connect-to-serial-console.md#sc-connect-SSH)シリアルコンソールに接続します。

## インスタンスの状態
<a name="sc-prereqs-instance-state"></a>

`running` を指定してください。

インスタンスが `pending`、`stopping`、`stopped`、`shutting-down`、または `terminated` 状態の場合、シリアルコンソールに接続できません。

インスタンスステータスの詳細については「[Amazon EC2 インスタンスの状態変更](ec2-instance-lifecycle.md)」を参照してください。

## Amazon EC2 Systems Manager
<a name="sc-prereqs-ssm"></a>

インスタンスで Amazon EC2 Systems Manager を使用する場合はSSM Agent のバージョン 3.0.854.0 以降を、そのインスタンスにインストールする必要があります。SSM Agent の詳細については*AWS Systems Manager ユーザーガイド*の「[SSM Agentを使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)」を参照してください。

## トラブルシューティングツールを選択
<a name="sc-prereqs-configure-troubleshooting-tool"></a>

シリアルコンソールを使用してインスタンスのトラブルシューティングを行う際に、Linux インスタンスでは GRUB または SysRq、Windows インスタンスでは Special Admin Console (SAC) を使用できます。これらのツールを使用できるようにするにはツールを使用するすべてのインスタンスで設定手順を実行する必要があります。

インスタンスのオペレーティングシステムの手順を使用して、選択したトラブルシューティングツールを設定します。

### (Linux インスタンス) GRUB を設定する
<a name="configure-grub"></a>

GRUB を設定するにはインスタンスの起動に使用された AMI に基づいて、次のいずれかの手順を選択してください。

------
#### [ Amazon Linux 2 ]

**Amazon Linux 2 インスタンスで GRUB を設定するには**

1. [SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)

1. `/etc/default/grub` で、次のオプションを追加または変更します。
   + `GRUB_TIMEOUT=1` を設定します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0"
   GRUB_TIMEOUT=1
   GRUB_DISABLE_RECOVERY="true"
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed=115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

------
#### [ Ubuntu ]

**Ubuntu インスタンスで GRUB を設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. `/etc/default/grub.d/50-cloudimg-settings.cfg` で、次のオプションを追加または変更します。
   + `GRUB_TIMEOUT=1` を設定します。
   + `GRUB_TIMEOUT_STYLE=menu` を追加します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_HIDDEN_TIMEOUT` を削除します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub.d/50-cloudimg-settings.cfg` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   # Cloud Image specific Grub settings for Generic Cloud Images
   # CLOUD_IMG: This file was created/modified by the Cloud Image build process
   
   # Set the recordfail timeout
   GRUB_RECORDFAIL_TIMEOUT=0
   
   # Do not wait on grub prompt
   GRUB_TIMEOUT=1
   GRUB_TIMEOUT_STYLE=menu
   
   # Set the default commandline
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295"
   
   # Set the grub console type
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed 115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo update-grub
   ```

------
#### [ RHEL ]

**RHEL インスタンスで GRUB を設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. `/etc/default/grub` で、次のオプションを追加または変更します。
   + `GRUB_TERMINAL_OUTPUT` を削除します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   GRUB_TIMEOUT=1
   GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
   GRUB_DEFAULT=saved
   GRUB_DISABLE_SUBMENU=true
   GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto"
   GRUB_DISABLE_RECOVERY="true"
   GRUB_ENABLE_BLSCFG=true
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed=115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
   ```

   RHEL 9.2 を使用している場合は次のコマンドを使用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

------
#### [ CentOS ]

CentOS AMI を使用して起動されるインスタンスの場合、GRUB はデフォルトでシリアルコンソール用に設定されます。

`/etc/default/grub` の例を次に示します。構成はシステム設定によって異なる場合があります。

```
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"
```

------

### (Linux インスタンス) SysRq を設定する
<a name="configure-sysrq"></a>

SysRq を設定するには現在のブートサイクルで SysRq コマンドを有効にします。設定を永続化するために、後続の起動で SysRq コマンドを有効にすることもできます。

**現在のブートサイクルについてすべての SysRq コマンドを有効にするには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. 次のコマンドを実行します。

   ```
   [ec2-user ~]$ sudo sysctl -w kernel.sysrq=1
   ```

   この設定は次回の再起動時にクリアされます。

**後続の起動についてすべての SysRq コマンドを有効にするには**

1. `/etc/sysctl.d/99-sysrq.conf` ファイルを作成し、お気に入りのエディタで開きます。

   ```
   [ec2-user ~]$ sudo vi /etc/sysctl.d/99-sysrq.conf
   ```

1. 次の行を追加します。

   ```
   kernel.sysrq=1
   ```

1. インスタンスを再起動して、変更を適用します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. `Password` プロンプトで、パスワードを入力し、**Enter** キーを押します。

### (Windows インスタンス) SAC とブートメニューを有効にする
<a name="configure-sac-bootmenu"></a>

**注記**  
インスタンスで SAC を有効にすると、パスワードの取得に依存する EC2 サービスは Amazon EC2 コンソールから操作できません。Amazon EC2 起動エージェント (EC2Config、EC2Launch v1、EC2Launch v2) での Windowsはシリアルコンソールを使用してさまざまなタスクを実行します。インスタンスで SAC を有効にすると、これらのタスクは正常に実行されません。Amazon EC2 の起動エージェント上の Windows の詳細については「[Amazon EC2 Windows インスタンスの設定](ec2-windows-instances.md)」を参照してください。SAC を有効にする場合は後で無効にすることができます。詳細については「[SAC とブートメニューを無効にする](troubleshoot-using-serial-console.md#disable-sac-bootmenu)」を参照してください。

インスタンスで SAC とブートメニューを有効にするには次のいずれかの方法を使用します。

------
#### [ PowerShell ]

**Windows インスタンスで SAC とブートメニューを有効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、昇格された PowerShell コマンドラインから以下の手順を実行します。

1. SAC を有効にします。

   ```
   bcdedit /ems '{current}' on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. ブートメニューを有効にします。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu yes
   bcdedit /set '{bootmgr}' timeout 15
   bcdedit /set '{bootmgr}' bootems yes
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**Windows インスタンスで SAC とブートメニューを有効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、コマンドプロンプトから次の手順を実行します。

1. SAC を有効にします。

   ```
   bcdedit /ems {current} on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. ブートメニューを有効にします。

   ```
   bcdedit /set {bootmgr} displaybootmenu yes
   bcdedit /set {bootmgr} timeout 15
   bcdedit /set {bootmgr} bootems yes
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------

# EC2 シリアルコンソールへのアクセスを設定する
<a name="configure-access-to-serial-console"></a>

シリアルコンソールへのアクセスを設定するにはアカウントレベルでシリアルコンソールへのアクセスを許可し、ユーザーにアクセス権を付与するように IAM ポリシーを設定する必要があります。Linux インスタンスではユーザーがトラブルシューティングでシリアルコンソールを使用できるように、すべてのインスタンスでパスワードベースのユーザーの設定もする必要があります。

EC2 シリアルコンソールは、仮想シリアルポート接続を使用してインスタンスとやり取りします。この接続はインスタンス VPC から独立しているため、起動障害やネットワーク設定の問題が発生した場合でも、インスタンスオペレーティングシステムを操作しトラブルシューティングツールを実行することができます。この接続は VPC ネットワークの外部にあるため、EC2 シリアルコンソールは、インスタンスへのトラフィックを承認する際は、インスタンスセキュリティグループまたはサブネットネットワーク ACL を使用しません。

**[開始する前に]**  
[前提条件](ec2-serial-console-prerequisites.md)が満たされていることを確認します。

**Topics**
+ [

## EC2 シリアルコンソールへのアクセスのレベル
](#serial-console-access-levels)
+ [

## EC2 シリアルコンソールへのアカウントアクセスを管理する
](#serial-console-account-access)
+ [

## EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する
](#serial-console-iam)
+ [

## Linux インスタンスで OS ユーザーパスワードを設定する
](#set-user-password)

## EC2 シリアルコンソールへのアクセスのレベル
<a name="serial-console-access-levels"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。詳細については「[EC2 シリアルコンソールへのアカウントアクセスを管理する](#serial-console-account-access)」を参照してください。

サービスコントロールポリシー (SCP) を使用して、組織内でシリアルコンソールへのアクセスを許可できます。その後、IAM ポリシーを使用してアクセスをコントロールすることで、ユーザーレベルできめ細かいアクセスコントロールを行うことができます。SCP ポリシーと IAM ポリシーを組み合わせて使用することで、シリアルコンソールに対するさまざまなレベルのアクセス制御が可能になります。

**組織レベル**  
サービスコントロールポリシー (SCP) を使用して、組織内のメンバーアカウントのためにシリアルコンソールへのアクセスを許可できます。SCP の詳細については*AWS Organizations ユーザーガイド* の「[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。

**インスタンスレベル**  
IAM PrincipalTag および ResourceTag 構造を使用し、ID でインスタンスを指定することで、シリアルコンソールのアクセスポリシーを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**ユーザーレベル**  
特定のインスタンスのシリアルコンソールサービスに SSH パブリックキーをプッシュするためのアクセス権限を指定ユーザーに許可または拒否するように IAM ポリシーを設定することで、ユーザーレベルでアクセスを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**OS レベル** (Linux インスタンスのみ)  
ユーザーパスワードはゲスト OS レベルで設定できます。これにより、一部のユースケースのためにシリアルコンソールにアクセス権を付与します。ただし、ログをモニタリングするにはパスワードベースのユーザーは必要ありません。詳細については「[Linux インスタンスで OS ユーザーパスワードを設定する](#set-user-password)」を参照してください。

## EC2 シリアルコンソールへのアカウントアクセスを管理する
<a name="serial-console-account-access"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。

この設定はアカウントレベルで直接、または宣言ポリシーを使用して設定されます。シリアルコンソールへのアクセスを許可する各 AWS リージョン で設定する必要があります。宣言型ポリシーを使用すると、複数のリージョンと複数のアカウントで同時に設定を適用できます。宣言ポリシーが使用されている場合、アカウント内で直接設定を変更することはできません。このトピックでは、アカウント内で設定を直接設定する方法について説明します。宣言ポリシーの使用の詳細については*AWS Organizations「 ユーザーガイド」*の[「宣言ポリシー」](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)を参照してください。

**Contents**
+ [

### ユーザーにアカウントアクセスを管理するための許可を付与する
](#sc-account-access-permissions)
+ [

### シリアルコンソールへのアカウントアクセスのステータスを表示する
](#sc-view-account-access)
+ [

### シリアルコンソールへのアカウントアクセスを許可する
](#sc-grant-account-access)
+ [

### シリアルコンソールへのアカウントアクセスを拒否する
](#sc-deny-account-access)

### ユーザーにアカウントアクセスを管理するための許可を付与する
<a name="sc-account-access-permissions"></a>

ユーザーが EC2 シリアルコンソールへのアカウントアクセスを管理できるようにするには必要な IAM 許可をユーザーに付与する必要があります。

次のポリシーはアカウントステータスを表示するためのアクセス権限、ならびに EC2 シリアルコンソールへのアカウントアクセスを許可および禁止するためのアクセス権限を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:GetSerialConsoleAccessStatus",
                "ec2:EnableSerialConsoleAccess",
                "ec2:DisableSerialConsoleAccess"
            ],
            "Resource": "*"
        }
    ]
}
```

------

詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

### シリアルコンソールへのアカウントアクセスのステータスを表示する
<a name="sc-view-account-access"></a>

------
#### [ Console ]

**シリアルコンソールにアカウントアクセスを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**EC2 シリアルコンソール**] タブで、[**EC2 シリアルコンソールアクセス**] の値は**許可**または**禁止**のいずれかです。

------
#### [ AWS CLI ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[get-serial-console-access-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-serial-console-access-status.html) コマンドを使用します。

```
aws ec2 get-serial-console-access-status
```

出力例を次に示します。`true` の値は、アカウントがシリアルコンソールへのアクセスを許可されていることを示します。

```
{
    "SerialConsoleAccessEnabled": true,
    "ManagedBy": "account"
}
```

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------
#### [ PowerShell ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[Get-EC2SerialConsoleAccessStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SerialConsoleAccessStatus.html) コマンドレットを使用します。

```
Get-EC2SerialConsoleAccessStatus -Select *
```

出力例を次に示します。`True` の値は、アカウントがシリアルコンソールへのアクセスを許可されていることを示します。

```
ManagedBy SerialConsoleAccessEnabled
--------- --------------------------
account   True
```

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------

### シリアルコンソールへのアカウントアクセスを許可する
<a name="sc-grant-account-access"></a>

------
#### [ Console ]

**シリアルコンソールへのアカウントアクセスを許可するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**管理**] をクリックしてください。

1. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールにアクセスを許可するには**[許可]** チェックボックスをオンにします。

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[enable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-serial-console-access.html) コマンドを使用します。

```
aws ec2 enable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": true
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[Enable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Enable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
True
```

------

### シリアルコンソールへのアカウントアクセスを拒否する
<a name="sc-deny-account-access"></a>

------
#### [ Console ]

**シリアルコンソールへのアカウントアクセスを拒否するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**管理**] をクリックしてください。

1. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールにアクセスを禁止するには**[許可]** チェックボックスをオフにします。

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[disable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-serial-console-access.html) コマンドを使用します。

```
aws ec2 disable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": false
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[Disable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Disable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
False
```

------

## EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する
<a name="serial-console-iam"></a>

デフォルトではユーザーはシリアルコンソールにアクセスできません。組織は IAM ポリシーを設定して、ユーザーに必要なアクセスを許可する必要があります。詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

シリアルコンソールのアクセスについて、`ec2-instance-connect:SendSerialConsoleSSHPublicKey` アクションを含む JSON ポリシードキュメントを作成します。このアクションはシリアルコンソールセッションを開始するシリアルコンソールサービスにパブリックキーをプッシュするための許可をユーザーに付与します。特定の EC2 インスタンスへのアクセスを制限することをお勧めします。それ以外の場合、この許可を持つすべてのユーザーはすべての EC2 インスタンスのシリアルコンソールに接続できます。

**Topics**
+ [

### シリアルコンソールへのアクセスを明示的に許可する
](#iam-explicitly-allow-access)
+ [

### シリアルコンソールへのアクセスを明示的に拒否する
](#serial-console-IAM-policy)
+ [

### リソースタグを使用してシリアルコンソールへのアクセスを制御する
](#iam-resource-tags)

### シリアルコンソールへのアクセスを明示的に許可する
<a name="iam-explicitly-allow-access"></a>

デフォルトでは誰もシリアルコンソールにアクセスできません。シリアルコンソールへのアクセスを許可するには明示的にアクセスを許可するようにポリシーを設定する必要があります。特定のインスタンスへのアクセスを制限するポリシーを設定することをお勧めします。

次のポリシーはインスタンス ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを許可します。

`DescribeInstances`、`DescribeInstanceTypes`、`GetSerialConsoleAccessStatus` アクションはリソースレベルの権限をサポートしていないため、これらのアクションには `*` (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeInstances",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
             "Resource": "*"
        },
        {
            "Sid": "AllowinstanceBasedSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### シリアルコンソールへのアクセスを明示的に拒否する
<a name="serial-console-IAM-policy"></a>

次の IAM ポリシーは`*` (アスタリスク) で示されるすべてのインスタンスのシリアルコンソールへのアクセスを許可し、ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを明示的に拒否します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DenySerialConsoleAccess",
            "Effect": "Deny",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### リソースタグを使用してシリアルコンソールへのアクセスを制御する
<a name="iam-resource-tags"></a>

リソースタグを使用して、インスタンスのシリアルコンソールへのアクセスを制御できます。

属性ベースアクセス制御はユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス権限を定義する認可戦略です。例えば、次のポリシーはインスタンスのリソースタグとプリンシパルのタグがタグキーについて同じ `SerialConsole` の値を持っている場合に限り、ユーザーがインスタンスのシリアルコンソール接続を開始することを許可します。

AWS リソースへのアクセスを制御するタグの使用の詳細については、「*IAM ユーザーガイド*」の「[AWS リソースへのアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。

`DescribeInstances`、`DescribeInstanceTypes`、`GetSerialConsoleAccessStatus` アクションはリソースレベルの権限をサポートしていないため、これらのアクションには `*` (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeInstances",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowTagBasedSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}"
                }
            }
        }
    ]
}
```

------

## Linux インスタンスで OS ユーザーパスワードを設定する
<a name="set-user-password"></a>

パスワードなしでシリアルコンソールに接続できます。ただし、Linux インスタンスのトラブルシューティングでシリアルコンソールを使用するにはインスタンスにパスワードベースの OS ユーザーがある必要があります。**

root ユーザーを含む任意の OS ユーザーに対し、パスワードを設定できます。root ユーザーはすべてのファイルを変更できますが、それ以外の OS ユーザーは権限が制限されていることに注意してください。

シリアルコンソールを使用するすべてのインスタンスについて、ユーザーパスワードを設定する必要があります。これはインスタンスごとに 1 回のみ必要なセットアップです。

**注記**  
デフォルトでは、AWS が提供する AMI には、パスワードベースのユーザーが設定されていません。既にルートユーザーパスワードが設定されている AMI を使用してインスタンスを起動した場合はこれらの手順を省略できます。

**Linux インスタンスで OS ユーザーパスワードを設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。EC2 シリアルコンソールの接続方法を除き、インスタンスへの接続には任意の方法を使用できます。

1. ユーザーのパスワードを設定するには**passwd** コマンドを使用します。次の例ではユーザーは `root` です。

   ```
   [ec2-user ~]$ sudo passwd root
   ```

   出力例を次に示します。

   ```
   Changing password for user root.
   New password:
   ```

1. `New password` のプロンプトに従って、新しいパスワードを入力してください。

1. プロンプトに従って、パスワードを再入力してください。

# EC2 シリアルコンソールに接続する
<a name="connect-to-serial-console"></a>

Amazon EC2 コンソールまたは SSH を使用して EC2 インスタンスのシリアルコンソールに接続できます。シリアルコンソールに接続したら、起動、ネットワーク設定、およびその他の問題のトラブルシューティングに使用できます。トラブルシューティングの詳細については「[EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする](troubleshoot-using-serial-console.md)」を参照してください。

**考慮事項**
+ インスタンスごとにサポートされるアクティブなシリアルコンソール接続は 1 つだけです。
+ シリアルコンソール接続は[ユーザーが解除](disconnect-serial-console-session.md)しない限り、通常 1 時間継続します。ただし、システムメンテナンス中はAmazon EC2 によりシリアルコンソールのセッションが切断されます。

  接続の期間は、IAM 認証情報の期間によって決定されません。IAM 認証情報の有効期限が切れても、シリアルコンソール接続の最大期間に達するまで接続は維持されます。EC2 シリアルコンソールコンソールエクスペリエンスを使用しているときに IAM 認証情報の有効期限が切れた場合は、ブラウザページを閉じて接続を終了します。
+ シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。
+ サポートされているシリアルコンソールポート: `ttyS0` (Linux インスタンス) および `COM1` (Windows インスタンス)
+ シリアルコンソールに接続すると、インスタンスのスループットがわずかに低下することがあります。

**Topics**
+ [

## ブラウザベースのクライアントを使用した接続
](#sc-connect-browser-based-client)
+ [

## 独自のキーと SSH クライアントを使用して接続する
](#sc-connect-SSH)
+ [

## EC2 シリアルコンソールエンドポイントとフィンガープリント
](#sc-endpoints-and-fingerprints)

## ブラウザベースのクライアントを使用した接続
<a name="sc-connect-browser-based-client"></a>

ブラウザベースのクライアントを使用して、EC2 インスタンスのシリアルコンソールに接続できます。これを行うにはAmazon EC2 コンソールでインスタンスを選択し、シリアルコンソールへの接続を選択してください。ブラウザベースのクライアントはアクセス権限を処理し、正常な接続を提供します。

EC2 シリアルコンソールはほとんどのブラウザで動作し、キーボードとマウスの入力をサポートしています。

接続する前に、[前提条件](ec2-serial-console-prerequisites.md)を満たしていることを確認してください。

**ブラウザベースのクライアントを使用してインスタンスのシリアルポートに接続するには (Amazon EC2 コンソール)**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[Actions]** (アクション)、**[Monitor and troubleshoot]** (モニタリングとトラブルシューティング)、**[EC2 Serial Console]** (EC2 シリアルコンソール)、**[Connect]** (接続) の順に選択してください。

   またはインスタンスを選択し、**[Connect]** (接続)、**[EC2 Serial Console]** (EC2 シリアルコンソール)、**[Connect]** (接続) の順に選択してください。

   ブラウザ内ターミナルウィンドウが開きます。

1. **Enter** キーを押します。ログインプロンプトが返された場合はシリアルコンソールに接続されています。

   画面が黒いままの場合はシリアルコンソールへの接続に関する問題の解決に役立てるために次の情報を使用できます。
   + **シリアルコンソールへのアクセスが設定されていることを確認します。**詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。
   + (Linux インスタンスのみ) **SysRq を使用してシリアルコンソールに接続します。**SysRq ではブラウザベースのクライアント経由で接続する必要はありません。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」を参照してください。
   + (Linux インスタンスのみ) **getty を再起動します。**インスタンスへの SSH アクセスがある場合はSSH を使用してインスタンスに接続し、次のコマンドを使用して getty を再起動します。

     ```
     [ec2-user ~]$ sudo systemctl restart serial-getty@ttyS0
     ```
   + **インスタンスを再起動します。**SysRq (Linux インスタンス)、EC2 コンソール、または AWS CLI を使用することで、インスタンスを再起動できます。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」(Linux インスタンス) または「[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)」を参照してください。

1. (Linux インスタンスのみ) `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. (Linux インスタンスのみ) `Password` プロンプトで、パスワードを入力し、**Enter** を押します。

## 独自のキーと SSH クライアントを使用して接続する
<a name="sc-connect-SSH"></a>

シリアルコンソール API の使用中に、独自の SSH キーを使用して、選択した SSH クライアントからインスタンスに接続できます。これにより、インスタンスにパブリックキーをプッシュするシリアルコンソール機能を活用できます。

SSH キーをインスタンスにプッシュした後は、SSH 接続は、ユーザーに EC2 シリアルコンソールアクセスを許可するように設定した IAM ポリシーの対象ではなくなります。

**[開始する前に]**  
[前提条件](ec2-serial-console-prerequisites.md)が満たされていることを確認します。

**SSH を使用してインスタンスのシリアルコンソールに接続するには**

1. **SSH パブリックキーをインスタンスにプッシュして、シリアルコンソールのセッションを開始する**

   [send-serial-console-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-serial-console-ssh-public-key.html) コマンドを使用して、SSH パブリックキーをインスタンスにプッシュします。これにより、シリアルコンソールのセッションが開始されます。

   このインスタンスについてシリアルコンソールのセッションが既に開始されている場合、一度に 1 つのセッションしか開くことができないため、コマンドは失敗します。シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。

   ```
   aws ec2-instance-connect send-serial-console-ssh-public-key \
       --instance-id i-001234a4bf70dec41EXAMPLE \
       --serial-port 0 \
       --ssh-public-key file://my_key.pub \
       --region us-east-1
   ```

1. 

**プライベートキーを使用してシリアルコンソールに接続する**

   パブリックキーをシリアルコンソールサービスから削除する前に、**ssh** コマンドを使用してシリアルコンソールに接続します。削除されるまで 60 秒かかります。

   パブリックキーに対応するプライベートキーを使用します。

   ユーザー名の形式は `instance-id.port0` であり、これはインスタンス ID とポート 0 で構成されます。次の例ではユーザー名は `i-001234a4bf70dec41EXAMPLE.port0` です。

   シリアルコンソールサービスのエンドポイントはリージョンごとに異なります。各リージョンのエンドポイントについては[EC2 シリアルコンソールエンドポイントとフィンガープリント](#sc-endpoints-and-fingerprints) の表を参照してください。次の例ではシリアルコンソールサービスが *us-east-1* リージョンにあります。

   ```
   ssh -i my_key i-001234a4bf70dec41EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws
   ```

   次の例では、`timeout 3600` を使用して SSH セッションが 1 時間後に終了するように設定します。セッション中に開始されたプロセスは、セッション終了後もインスタンスで実行し続ける場合があります。

   ```
   timeout 3600 ssh -i my_key i-001234a4bf70dec41EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws
   ```

1. 

**(オプション) フィンガープリントを検証する**

   シリアルコンソールの初回接続時に、フィンガープリントを検証するように求めるメッセージが表示されます。シリアルコンソールのフィンガープリントと、検証のために表示されるフィンガープリントを比較できます。これらのフィンガープリントが一致しない場合、「中間者 (MITM) 」攻撃を受けている可能性があります。一致する場合は確信をもってシリアルコンソールに接続できます。

   次のフィンガープリントはus-east-1 リージョンのシリアルコンソールサービス用です。各リージョンのフィンガープリントについては[EC2 シリアルコンソールエンドポイントとフィンガープリント](#sc-endpoints-and-fingerprints) をご参照ください。

   ```
   SHA256:dXwn5ma/xadVMeBZGEru5l2gx+yI5LDiJaLUcz0FMmw
   ```

   フィンガープリントはシリアルコンソールへの初回接続時のみ表示されます。

1. **Enter** キーを押します。プロンプトが返された場合はシリアルコンソールに接続されています。

   画面が黒いままの場合はシリアルコンソールへの接続に関する問題の解決に役立てるために次の情報を使用できます。
   + **シリアルコンソールへのアクセスが設定されていることを確認します。**詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。
   + (Linux インスタンスのみ) **SysRq を使用してシリアルコンソールに接続します。**SysRq ではSSH 経由で接続する必要はありません。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」を参照してください。
   + (Linux インスタンスのみ) **getty を再起動します。**インスタンスへの SSH アクセスがある場合はSSH を使用してインスタンスに接続し、次のコマンドを使用して getty を再起動します。

     ```
     [ec2-user ~]$ sudo systemctl restart serial-getty@ttyS0
     ```
   + **インスタンスを再起動します。**SysRq (Linux インスタンスのみ)、EC2 コンソール、または AWS CLI を使用することで、インスタンスを再起動できます。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」(Linux インスタンスのみ) または 「[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)」を参照してください。

1. (Linux インスタンスのみ) `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. (Linux インスタンスのみ) `Password` プロンプトで、パスワードを入力し、**Enter** を押します。

## EC2 シリアルコンソールエンドポイントとフィンガープリント
<a name="sc-endpoints-and-fingerprints"></a>

EC2 シリアルコンソールのサービスエンドポイントとフィンガープリントは次のとおりです。インスタンスのシリアルコンソールにプログラムで接続するにはEC2 シリアルコンソールエンドポイントを使用します。EC2 シリアルコンソールエンドポイントとフィンガープリントはAWS リージョンごとに一意です。


| リージョン名 | リージョン | エンドポイント | Fingerprint | 
| --- | --- | --- | --- | 
| 米国東部 (オハイオ) | us-east-2 | serial-console.ec2-instance-connect.us-east-2.aws | SHA256:EhwPkTzRtTY7TRSzz26XbB0/HvV9jRM7mCZN0xw/d/0 | 
| 米国東部 (バージニア北部) | us–east–1 | serial-console.ec2-instance-connect.us-east-1.aws | SHA256:dXwn5ma/xadVMeBZGEru5l2gx\$1yI5LDiJaLUcz0FMmw | 
| 米国西部（北カリフォルニア) | us-west-1 | serial-console.ec2-instance-connect.us-west-1.aws | SHA256:OHldlcMET8u7QLSX3jmRTRAPFHVtqbyoLZBMUCqiH3Y | 
| 米国西部 (オレゴン) | us-west-2 | serial-console.ec2-instance-connect.us-west-2.aws | SHA256:EMCIe23TqKaBI6yGHainqZcMwqNkDhhAVHa1O2JxVUc | 
| アフリカ (ケープタウン) | af-south-1 | ec2-serial-console.af-south-1.api.aws | SHA256:RMWWZ2fVePeJUqzjO5jL2KIgXsczoHlz21Ed00biiWI | 
| アジアパシフィック (香港) | ap-east-1 | ec2-serial-console.ap-east-1.api.aws | SHA256:T0Q1lpiXxChoZHplnAkjbP7tkm2xXViC9bJFsjYnifk | 
| アジアパシフィック (ハイデラバード) | ap-south-2 | ec2-serial-console.ap-south-2.api.aws | SHA256:WJgPBSwV4/shN\$1OPITValoewAuYj15DVW845JEhDKRs | 
| アジアパシフィック (ジャカルタ) | ap-southeast-3 | ec2-serial-console.ap-southeast-3.api.aws | SHA256:5ZwgrCh\$1lfns32XITqL/4O0zIfbx4bZgsYFqy3o8mIk | 
| アジアパシフィック (マレーシア) | ap-southeast-5 | ec2-serial-console.ap-southeast-5.api.aws | SHA256:cQXTHQMRcqRdIjmAGoAMBSExeoRobYyRwT67yTjnEiA | 
| アジアパシフィック (メルボルン) | ap-southeast-4 | ec2-serial-console.ap-southeast-4.api.aws | SHA256:Avaq27hFgLvjn5gTSShZ0oV7h90p0GG46wfOeT6ZJvM | 
| アジアパシフィック (ムンバイ) | ap-south-1 | serial-console.ec2-instance-connect.ap-south-1.aws | SHA256:oBLXcYmklqHHEbliARxEgH8IsO51rezTPiSM35BsU40 | 
| アジアパシフィック (大阪) | ap-northeast-3 | ec2-serial-console.ap-northeast-3.api.aws | SHA256:Am0/jiBKBnBuFnHr9aXsgEV3G8Tu/vVHFXE/3UcyjsQ | 
| アジアパシフィック (ソウル) | ap-northeast-2 | serial-console.ec2-instance-connect.ap-northeast-2.aws | SHA256:FoqWXNX\$1DZ\$1\$1GuNTztg9PK49WYMqBX\$1FrcZM2dSrqrI | 
| アジアパシフィック (シンガポール) | ap-southeast-1 | serial-console.ec2-instance-connect.ap-southeast-1.aws | SHA256:PLFNn7WnCQDHx3qmwLu1Gy/O8TUX7LQgZuaC6L45CoY | 
| アジアパシフィック (シドニー) | ap-southeast-2 | serial-console.ec2-instance-connect.ap-southeast-2.aws | SHA256:yFvMwUK9lEUQjQTRoXXzuN\$1cW9/VSe9W984Cf5Tgzo4 | 
| アジアパシフィック (タイ) | ap-southeast-7 | ec2-serial-console.ap-southeast-7.api.aws | SHA256:KCAZiRYrR1Q2lqsg7vTwixWmvc2wmjVT31XRgSdEfDY | 
| アジアパシフィック (東京) | ap-northeast-1 | serial-console.ec2-instance-connect.ap-northeast-1.aws | SHA256:RQfsDCZTOfQawewTRDV1t9Em/HMrFQe\$1CRlIOT5um4k | 
| カナダ (中部) | ca-central-1 | serial-console.ec2-instance-connect.ca-central-1.aws | SHA256:P2O2jOZwmpMwkpO6YW738FIOTHdUTyEv2gczYMMO7s4 | 
| カナダ西部 (カルガリー) | ca-west-1 | ec2-serial-console.ca-west-1.api.aws | SHA256:s3rc8lI2xhbhr3iedjJNxGAFLPGOLjx7IxxXrGckk6Q | 
| 中国 (北京) | cn-north-1 | ec2-serial-console---cn-north-1---api.amazonwebservices.com.rproxy.goskope.com.cn | SHA256:2gHVFy4H7uU3\$1WaFUxD28v/ggMeqjvSlgngpgLgGT\$1Y | 
| 中国 (寧夏) | cn-northwest-1 | ec2-serial-console---cn-northwest-1---api.amazonwebservices.com.rproxy.goskope.com.cn | SHA256:TdgrNZkiQOdVfYEBUhO4SzUA09VWI5rYOZGTogpwmiM | 
| 欧州 (フランクフルト) | eu-central-1 | serial-console.ec2-instance-connect.eu-central-1.aws | SHA256:aCMFS/yIcOdOlkXvOl8AmZ1Toe\$1bBnrJJ3Fy0k0De2c | 
| 欧州 (アイルランド) | eu-west-1 | serial-console.ec2-instance-connect.eu-west-1.aws | SHA256:h2AaGAWO4Hathhtm6ezs3Bj7udgUxi2qTrHjZAwCW6E | 
| 欧州 (ロンドン) | eu-west-2 | serial-console.ec2-instance-connect.eu-west-2.aws | SHA256:a69rd5CE/AEG4Amm53I6lkD1ZPvS/BCV3tTPW2RnJg8 | 
| 欧州 (ミラノ) | eu-south-1 | ec2-serial-console.eu-south-1.api.aws | SHA256:lC0kOVJnpgFyBVrxn0A7n99ecLbXSX95cuuS7X7QK30 | 
| 欧州 (パリ) | eu-west-3 | serial-console.ec2-instance-connect.eu-west-3.aws | SHA256:q8ldnAf9pymeNe8BnFVngY3RPAr/kxswJUzfrlxeEWs | 
| 欧州 (スペイン) | eu-south-2 | ec2-serial-console.eu-south-2.api.aws | SHA256:GoCW2DFRlu669QNxqFxEcsR6fZUz/4F4n7T45ZcwoEc | 
| 欧州 (ストックホルム) | eu-north-1 | serial-console.ec2-instance-connect.eu-north-1.aws | SHA256:tkGFFUVUDvocDiGSS3Cu8Gdl6w2uI32EPNpKFKLwX84 | 
| 欧州 (チューリッヒ) | eu-central-2 | ec2-serial-console.eu-central-2.api.aws | SHA256:8Ppx2mBMf6WdCw0NUlzKfwM4/IfRz4OaXFutQXWp6mk | 
| イスラエル (テルアビブ) | il-central-1 | ec2-serial-console.il-central-1.api.aws | SHA256:JR6q8v6kNNPi8\$1QSFQ4dj5dimNmZPTgwgsM1SNvtYyU | 
| メキシコ (中部) | mx-central-1 | ec2-serial-console.mx-central-1.api.aws | SHA256:BCuVl13iQNk\$1CcVnt18Ef4p2ZHUrBBAOxlFetB32GS0 | 
| 中東 (バーレーン) | me-south-1 | ec2-serial-console.me-south-1.api.aws | SHA256:nPjLLKHu2QnLdUq2kVArsoK5xvPJOMRJKCBzCDqC3k8 | 
| 中東 (アラブ首長国連邦) | me-central-1 | ec2-serial-console.me-central-1.api.aws | SHA256:zpb5duKiBZ\$1l0dFwPeyykB4MPBYhI/XzXNeFSDKBvLE | 
| 南米 (サンパウロ） | sa-east-1 | serial-console.ec2-instance-connect.sa-east-1.aws | SHA256:rd2\$1/32Ognjew1yVIemENaQzC\$1Botbih62OqAPDq1dI | 
| AWS GovCloud (米国東部) | us-gov-east-1 | serial-console.ec2-instance-connect.us-gov-east-1.amazonaws.com | SHA256:tIwe19GWsoyLClrtvu38YEEh\$1DHIkqnDcZnmtebvF28 | 
| AWS GovCloud (米国西部) | us-gov-west-1 | serial-console.ec2-instance-connect.us-gov-west-1.amazonaws.com | SHA256:kfOFRWLaOZfB\$1utbd3bRf8OlPf8nGO2YZLqXZiIw5DQ | 

# EC2 シリアルコンソールからの切断
<a name="disconnect-serial-console-session"></a>

インスタンスの EC2 シリアルコンソール に接続する必要がなくなった場合は接続を切断できます。シリアルコンソールとの接続を切断しても、インスタンスで実行中のすべてのシェルセッションは引き続き実行されます。シェルセッションを終了したい場合はシリアルコンソールとの接続を切断する前に、そのセッションを終了しておく必要があります。

**考慮事項**
+ シリアルコンソール接続はユーザーが解除しない限り、通常 1 時間継続します。ただし、システムメンテナンス中はAmazon EC2 によりシリアルコンソールのセッションが切断されます。
+ シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。

シリアルコンソールとの接続解除の方法はクライアントによって異なります。

**ブラウザベースのクライアント**  
シリアルコンソールから切断するにはシリアルコンソールのブラウザ内ターミナルウィンドウを閉じます。

**標準 OpenSSH クライアント**  
シリアルコンソールから切断するには次のコマンドを使用して SSH 接続を閉じます。このコマンドは新しい行の直後に実行する必要があります。

```
~.
```

SSH 接続を閉じるために使用するコマンドは使用している SSH クライアントによって異なる場合があります。

# EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする
<a name="troubleshoot-using-serial-console"></a>

EC2 シリアルコンソールを使用して、インスタンスのシリアルポートに接続することで、起動、ネットワーク設定、およびその他の問題をトラブルシューティングできます。

インスタンスのオペレーティングシステムと、インスタンスで設定したツールの手順を使用します。

**Topics**
+ [GRUB (Linux)](#grub)
+ [SysRq (Linux)](#SysRq)
+ [SAC (Windows)](#troubleshooting-sac)

**前提条件**  
始める前に、選択したトラブルシューティングツールの設定など、[前提条件](ec2-serial-console-prerequisites.md)を満たしていることを確認してください。

## (Linux インスタンス) GRUB を使用してインスタンスをトラブルシューティングする
<a name="grub"></a>

GNU GRUB (GNU GRand Unified Bootloader の略。一般に GRUB と呼ばれます) はほとんどの Linux オペレーティングシステムのデフォルトのブートローダーです。GRUB メニューから、起動先のカーネルを選択したり、メニューエントリを変更してカーネルの起動方法を変更したりできます。これは障害が発生したインスタンスをトラブルシューティングする際に役立ちます。

GRUB メニューはブートプロセス中に表示されます。通常の SSH ではメニューにアクセスできませんが、EC2 シリアルコンソールからアクセスできます。

シングルユーザーモードまたは緊急モードで起動できます。シングルユーザーモードではカーネルを低めの実行レベルで起動します。例えば、ファイルシステムをマウントしても、ネットワークをアクティブ化しない場合があり、インスタンスの修正に必要なメンテナンスを実行することができます。緊急モードはシングルユーザーモードと似ていますが、カーネルは可能な限り低い実行レベルで実行される点が異なります。

**シングルユーザーモードで起動するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 次のコマンドを実行して、インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 再起動時に GRUB メニューが表示されたら、任意のキーを押してブートプロセスを停止します。

1. GRUB メニューで、矢印キーを使用して起動先のカーネルを選択し、キーボードの `e` を押します。

1. 矢印キーを使用して、カーネルを含む行にカーソルを置きます。行はインスタンスの起動に使用された AMI に応じて、`linux` または `linux16` のいずれかで始まります。Ubuntu の場合、2 つの行は `linux` で始まります。どちらも次のステップで変更する必要があります。

1. 行の最後に、単語 `single` を追加します。

   Amazon Linux 2 の例を次に示します。

   ```
   linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\
   dadd-4499-938d-ebbf42c3e499 ro  console=tty0 console=ttyS0,115200n8 net.ifname\
   s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\
   ll=0 single
   ```

1. シングルユーザーモードで起動するには**Ctrl\$1X** キーを押します。

1. `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. `Password` プロンプトで、パスワードを入力し、**Enter** キーを押します。

 

**緊急モードで起動するには**  
シングルユーザーモードと同じ手順に従い、ステップ 6 で `single` の代わりに `emergency` という単語を追加します。

## (Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングする
<a name="SysRq"></a>

システムリクエスト (SysRq) キーは「マジック SysRq」とも呼ばれ、シェルの外部でカーネルにコマンドを直接送信するために使用でき、カーネルが何をしているかにかかわらず、カーネルは応答します。例えば、インスタンスが応答を停止した場合、SysRq キーを使用して、カーネルにクラッシュまたは再起動するように指示できます。詳細についてはWikipedia の「[マジック SysRq キー](https://en.wikipedia.org/wiki/Magic_SysRq_key)」を参照してください。

SysRq コマンドはEC2 シリアルコンソールブラウザベースのクライアントまたは SSH クライアントで使用できます。中断リクエストを送信するコマンドはクライアントごとに異なります。

SysRq を使用するには使用しているクライアントに基づいて、次のいずれかの手順を選択してください。

------
#### [ Browser-based client ]

**シリアルコンソールのブラウザベースのクライアントで SysRq を使用するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 中断リクエストを送信するには`CTRL+0` (ゼロ) を押します。キーボードがサポートしている場合はPause キーまたは Break キーを使用して中断リクエストを送信することもできます。

   ```
   [ec2-user ~]$ CTRL+0
   ```

1. SysRq コマンドを発行するには必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには`h` を押します。

   ```
   [ec2-user ~]$ h
   ```

   `h` コマンドは次のような内容を出力します。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```

------
#### [ SSH client ]

**SSH クライアントで SysRq を使用するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 中断リクエストを送信するには`~B` (チルダ、その後に大文字の `B`) を押します。

   ```
   [ec2-user ~]$ ~B
   ```

1. SysRq コマンドを発行するには必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには`h` を押します。

   ```
   [ec2-user ~]$ h
   ```

   `h` コマンドは次のような内容を出力します。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```
**注記**  
中断リクエストの送信に使用するコマンドは使用している SSH クライアントによって異なる場合があります。

------

## (Windows インスタンス) SAC を使用してインスタンスをトラブルシューティングする
<a name="troubleshooting-sac"></a>

Windows の Special Admin Console (SAC) 機能を使用して、Windows インスタンスをトラブルシューティングできます。インスタンスのシリアルコンソールに接続して SAC を使用すると、ブートプロセスを中断し、Windows をセーフモードで起動できます。

**注記**  
インスタンスで SAC を有効にすると、パスワードの取得に依存する EC2 サービスは Amazon EC2 コンソールから操作できません。Amazon EC2 起動エージェント (EC2Config、EC2Launch v1、EC2Launch v2) での Windowsはシリアルコンソールを使用してさまざまなタスクを実行します。インスタンスで SAC を有効にすると、これらのタスクは正常に実行されません。Amazon EC2 の起動エージェント上の Windows の詳細については「[Amazon EC2 Windows インスタンスの設定](ec2-windows-instances.md)」を参照してください。SAC を有効にする場合は後で無効にすることができます。詳細については「[SAC とブートメニューを無効にする](#disable-sac-bootmenu)」を参照してください。

**Topics**
+ [

### SAC を使用する
](#use-sac)
+ [

### ブートメニューを使用する
](#use-boot-menu)
+ [

### SAC とブートメニューを無効にする
](#disable-sac-bootmenu)

### SAC を使用する
<a name="use-sac"></a>

**SAC を使用するには**

1. [シリアルコンソールに接続します。](connect-to-serial-console.md)

   インスタンスで SAC が有効になっている場合、シリアルコンソールには `SAC>` プロンプトが表示されます。  
![\[シリアルコンソールにSAC プロンプトが表示されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-3.png)

1. SAC コマンドを表示するには と入力し、 **Enter**.を押します。

   正常な出力  
![\[疑問符を入力して SAC コマンドを表示します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-4.png)

1. コマンドプロンプトチャネル `cmd0001` やなど `cmd0002`を作成するには と入力し、 **Enter**.を押します。

1. コマンドプロンプトチャネルを表示するには**ESC** を押してから **TAB** を押します。

   正常な出力  
![\[コマンドプロンプトチャネル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-5.png)

1. チャネルを切り替えるには**ESC \$1 TAB \$1 チャネル番号**を同時に押します。例えば、`cmd0002` チャネルに切り替えるには (チャネルが作成されている場合)、**ESC \$1 TAB \$1 2** を押します。

1. コマンドプロンプトチャネルに必要な認証情報を入力してください。  
![\[コマンドプロンプトで認証情報が要求されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-6.png)

   コマンドプロンプトは既に出力された文字の読み取りを許可しない点を除いて、デスクトップ上で取得するのと同じフル機能のコマンドシェルです。  
![\[フル機能のコマンドシェル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-7.png)

**PowerShell はコマンドプロンプトからも使用できます。**

進行状況の詳細設定をサイレントモードに設定する必要がある場合があります。

![\[コマンドプロンプト内の PowerShell。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-8.png)


### ブートメニューを使用する
<a name="use-boot-menu"></a>

インスタンスでブートメニューが有効になっていて、SSH 経由で接続した後に再起動した場合は次のようにブートメニューが表示されます。

![\[コマンドプロンプトのブートメニュー。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-1.png)


**ブートメニューのコマンド**

ENTER  
オペレーティングシステムの選択したエントリを開始します。

TAB  
[Tools] (ツール) メニューに切り替えます。

ESC  
インスタンスをキャンセルして再起動します。

ESC、その後に 8  
[**F8**] を押す操作に相当します。選択した項目の詳細オプションを表示します。

ESC キー \$1 左矢印  
最初のブートメニューに戻ります。  
ESC キーだけではWindows がエスケープシーケンスが進行中かどうかを確認するために待機しているため、メインメニューに戻ることはありません。

![\[高度なブートオプション。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-2.png)


### SAC とブートメニューを無効にする
<a name="disable-sac-bootmenu"></a>

SAC とブートメニューを有効にする場合、これらの機能を後で無効にできます。

インスタンスで SAC とブートメニューを無効にするには次のいずれかの方法を使用します。

------
#### [ PowerShell ]

**Windows インスタンスで SAC とブートメニューを無効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、昇格された PowerShell コマンドラインから以下の手順を実行します。

1. まず、値を `no` に変更して、ブートメニューを無効にします。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu no
   ```

1. その後、値を `off` に変更して SAC を無効にします。

   ```
   bcdedit /ems '{current}' off
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**Windows インスタンスで SAC とブートメニューを無効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、コマンドプロンプトから次の手順を実行します。

1. まず、値を `no` に変更して、ブートメニューを無効にします。

   ```
   bcdedit /set {bootmgr} displaybootmenu no
   ```

1. その後、値を `off` に変更して SAC を無効にします。

   ```
   bcdedit /ems {current} off
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------