

# SSH を使用した Linux インスタンスへの接続
<a name="connect-to-linux-instance"></a>

SSH を使用して Linux インスタンスに接続するには、いくつかの方法があります。接続元のローカルコンピュータのオペレーティングシステムによっては、接続方法が異なることもあります。また、EC2 Instance Connect や AWS Systems Manager Session Manager などブラウザベースの方法もあり、こうした方法はどのコンピュータからでも使用できます。SSH を使用して Linux インスタンスに接続してコマンドを実行することも、SSH を使用してローカルコンピュータとインスタンス間でファイルを転送することもできます。

SSH を使用して Linux インスタンスに接続する前に、以下の前提条件を満たしていることを確認してください。
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

次に、以下のオプションのいずれかを選択して SSH で Linux インスタンスに接続します。
+ [SSH クライアントを使用して接続する](connect-linux-inst-ssh.md)
+ [PuTTY を使用した接続](connect-linux-inst-from-windows.md) 
+ [SCP を使用してファイルを転送する](linux-file-transfer-scp.md)

インスタンスに接続できず、トラブルシューティングの手助けが必要な場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

# SSH クライアントを使用して Linux インスタンスに接続する
<a name="connect-linux-inst-ssh"></a>

Secure Shell (SSH) を使用して、ローカルコンピュータから Linux インスタンスに接続できます。その他のオプションの詳細については、「[EC2 インスタンスに接続する](connect.md)」を参照してください。

**注記**  
インスタンスに接続しようとしているときにエラーが発生した場合は、インスタンスが [SSH 接続の前提条件](#ssh-prereqs-linux-from-linux-macos) のすべてを満たしていることを確認してください。前提条件をすべて満たしているにもかかわらず Linux インスタンスに接続できない場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

**Topics**
+ [SSH 接続の前提条件](#ssh-prereqs-linux-from-linux-macos)
+ [SSH クライアントを使用して Linux インスタンスに接続する](#connect-linux-inst-sshClient)

## SSH 接続の前提条件
<a name="ssh-prereqs-linux-from-linux-macos"></a>

SSH を使用して Linux インスタンスに接続する前に、以下のタスクを実行してください。

**一般的な前提条件を満たします。**  
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP アドレスからのインバウンド SSH トラフィックを許可します。**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

**ローカルコンピュータに SSH クライアントをインストールします (必要な場合)。**  
ローカルコンピュータには、デフォルトで SSH クライアントがインストールされている場合があります。これを確認するには、ターミナルウィンドウで次のコマンドを入力します。ご使用のコンピュータでこのコマンドが認識されない場合、SSH クライアントをインストールする必要があります。  

```
ssh
```
Windows で使用できるオプションの一部を次に示します。コンピュータで別のオペレーティングシステムを実行している場合は、そのオペレーティングシステムのドキュメントで SSH クライアントのオプションを確認してください。

## Windows に OpenSSH をインストールする
<a name="openssh"></a>

Windows に OpenSSH をインストールしたら、SSH を使用して Windows コンピュータから Linux インスタンスに接続できます。開始する前に、以下の前提条件を満たしていることを確認してください。

**Windows のバージョン**  
コンピュータの Windows のバージョンは、Windows Server 2019 以降である必要があります。  
それより前のバージョンの Windows の場合は、代わりに [Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki) をダウンロードしてインストールします。

**PowerShell の要件**  
PowerShell を使用して Windows OS に OpenSSH をインストールするには、PowerShell バージョン 5.1 以降を実行していて、アカウントがビルトインの管理者グループのメンバーである必要があります。PowerShell から `$PSVersionTable.PSVersion` を実行して、PowerShell のバージョンを確認します。  
自分がビルトインの管理者グループのメンバーかどうかを確認するには、次の PowerShell コマンドを実行します。  

```
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
```
ビルトインの管理者グループのメンバーである場合、出力は `True` です。

PowerShell を使用して OpenSSH for Windows をインストールするには、次の PowerShell コマンドを実行します。

```
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下は出力例です。

```
Path          :
Online        : True
RestartNeeded : False
```

PowerShell を使用して Windows から OpenSSH をアンインストールするには、次の PowerShell コマンドを実行します。

```
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下は出力例です。

```
Path          :
Online        : True
RestartNeeded : True
```

## Windows Subsystem for Linux (WSL) をインストールする
<a name="WSL"></a>

Windows に WSL をインストールしたら、SSH クライアントなどの Linux コマンドラインツールを使用して、Windows コンピュータから Linux インスタンスに接続できます。

「[EC2 Windows インスタンスに Windows Subsystem for Linux をインストールする](install-wsl-on-ec2-windows-instance.md)」の手順に従います。Microsoft のインストールガイドの手順に従うと、Linux の Ubuntu ディストリビューションがインストールされます。必要に応じて、別の Linux ディストリビューションをインストールできます。

WSL ターミナルウィンドウで、Windows から WSL に `.pem` ファイル (インスタンスの起動時に指定したキーペアの場合) をコピーします。インスタンスに接続する際に使用する、WSL の `.pem` ファイルへの完全修飾パスをメモします。Windows ハードドライブへのパスを指定する方法の詳細については、[C ドライブにアクセスする方法](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-access-my-c--drive-)を参照してください。

```
cp /mnt/<Windows drive letter>/path/my-key-pair.pem ~/WSL-path/my-key-pair.pem
```

Windows Subsystem for Linux のアンインストールの詳細については、[WSL ディストリビューションをアンインストールする方法](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-uninstall-a-wsl-distribution-)について参照してください。

## SSH クライアントを使用して Linux インスタンスに接続する
<a name="connect-linux-inst-sshClient"></a>

SSH クライアントを使用して Linux インスタンスに接続するには、次の手順に従います。

**SSH クライアントを使用してインスタンスに接続するには**

1. コンピュータでターミナルウィンドウを開きます。

1. **ssh** コマンドを使用してインスタンスに接続します。ここで、前提条件の一部として収集したインスタンスの詳細が必要になります。例えば、プライベートキー (`.pem` ファイル) の場所、ユーザー名、およびパブリック DNS 名または IPv6 アドレスが必要です。コマンドの例を次に示します。
   + (パブリック DNS) パブリック DNS 名を使用するには、次のコマンドを入力します。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、IPv6 アドレスを使用するには、次のコマンドを入力します。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@2001:db8::1234:5678:1.2.3.4
     ```

   以下に、応答の例を示します。

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
   ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
   Are you sure you want to continue connecting (yes/no)?
   ```

1. (オプション) セキュリティアラートのフィンガープリントが、インスタンスのフィンガープリントと一致することを確認します。これらのフィンガープリントが一致しない場合、何者かが中間者 (MITM) 攻撃を試みている可能性があります。一致した場合は、次のステップに進んでください。詳細については、「[インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint)」を参照してください。

1. **yes** と入力します。

   以下のようなレスポンスが表示されます。

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (ECDSA) to the list of known hosts.
   ```

# PuTTY を使用して Linux インスタンスに接続する
<a name="connect-linux-inst-from-windows"></a>

Windows 向けの無料の SSH クライアントである PuTTY を使用して、Linux インスタンスに接続できます。

Windows Server 2019 以降を実行している場合は、SSH プロトコルを使用したリモートログイン用のオープンソース接続ツールである OpenSSH の使用をお勧めします。

**注記**  
インスタンスに接続しようとしているときにエラーが発生した場合は、インスタンスが [SSH 接続の前提条件](connect-linux-inst-ssh.md#ssh-prereqs-linux-from-linux-macos) のすべてを満たしていることを確認してください。前提条件をすべて満たしているにもかかわらず Linux インスタンスに接続できない場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

**Topics**
+ [前提条件](#putty-prereqs)
+ [PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)
+ [Linux インスタンスへの接続](#putty-ssh)

## 前提条件
<a name="putty-prereqs"></a>

PuTTY を使用して Linux インスタンスに接続する前に、以下のタスクを完了しておきます。

**一般的な前提条件を満たします。**  
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP アドレスからのインバウンド SSH トラフィックを許可します。**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

**ローカルコンピュータに PuTTY をインストールする (必要な場合)。**  
[PuTTY のダウンロードページ](https://www.chiark.greenend.org.uk/~sgtatham/putty/)から、PuTTY をダウンロードしてインストールします。既にインストールされている旧バージョンの PuTTY がある場合は、最新バージョンをダウンロードすることをお勧めします。必ずスイート全体をインストールします。

**PuTTYgen を使用してプライベートキーを PPK 形式に変換する。**  
インスタンスの起動時に指定したキーペアのプライベートキーを指定する必要があります。プライベートキーを .pem 形式で作成した場合は、PPK ファイルに変換して PuTTY で使用できるようにする必要があります。プライベート (.pem) ファイルを検索し、[PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)のステップに従ってください。

## (オプション) PuTTYgen を使用してプライベートキーを変換する
<a name="putty-private-key"></a>

PuTTY は、SSH キーの PEM 形式をネイティブにサポートしていません。PuTTY には、PEM キーを PuTTY が必要とする PPK 形式に変換する PuTTYgen というツールが用意されています。PPK 形式ではなく PEM 形式を使用してキーを作成した場合は、プライベートキー (.pem ファイル) をこの形式 (.ppk ファイル) に変換して、PuTTY で使用できるようにする必要があります。

**プライベートキーを PEM 形式から PPK 形式に変換するには**

1. [**スタート**] メニューで、[**すべてのプログラム**]、[**PuTTY**]、[**PuTTYgen**] の順に選択します。

1. [**Type of key to generate (生成するキーのタイプ)**] で、[**RSA**] を選択します。お使いの PuTTYgen のバージョンにこのオプションが含まれていない場合は、[**SSH-2 RSA**] を選択します。  
![\[PuTTYgen の RSA キー。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/puttygen-key-type.png)

1. **ロード]** を選択します。PuTTYgen では、デフォルトでは `.ppk` 拡張子を持つファイルだけが表示されます。`.pem` ファイルの場所を特定するには、すべてのタイプのファイルを表示するオプションを選択します。  
![\[すべてのファイルタイプを選択します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/puttygen-load-key.png)

1. インスタンスの起動時に指定したキーペアの `.pem` ファイルを選択し、[**開く**] を選択します。PuTTYgen により、`.pem` ファイルが正常にインポートされたことが表示されます。[**OK**] を選択します。

1. プライベートキーを PuTTY で使用できる形式で保存するには、[**プライベートキーを保存**] を選択します。PuTTYgen に、パスフレーズなしでキーを保存することに関する警告が表示されます。[**Yes**] を選択します。
**注記**  
プライベートキーのパスフレーズは追加の保護レイヤーです。プライベートキーが検出されても、パスフレーズがなければ使用できません。パスフレーズを使用することの欠点は、インスタンスにログオンしたり、ファイルをインスタンスにコピーしたりするのに人間の介入が必要となるため、オートメーションが難しくなることです。

1. キーペアに使用した名前と同じ名前 (`key-pair-name` など) をキーに指定し、[**保存**] を選択します。PuTTY により、`.ppk` ファイルに拡張子が自動的に追加されます。

プライベートキーが PuTTY で使用するための正しい形式となりました。これで、PuTTY の SSH クライアントを使用してインスタンスに接続することができます。

## Linux インスタンスへの接続
<a name="putty-ssh"></a>

PuTTY を使用して Linux インスタンスに接続するには、次の手順に従います。秘密キーに作成した `.ppk` ファイルが必要になります。詳細については、前のセクションの[(オプション) PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)を参照してください。インスタンスの接続でエラーが発生した場合は、[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)を参照してください。

**最後にテストされたバージョン**: PuTTY .78

**PuTTY を使用してインスタンスに接続するには**

1. PuTTY を起動します (**[スタート]** メニューから **[PuTTY]** を検索し、**[開く]** を選択します)。

1. [**Category (カテゴリ)**] ペインで [**Session (セッション)**] を選択し、次のフィールドに入力します。

   1. [**Host Name (ホスト名)**] ボックスで、次のいずれかの操作を行います。
      + (パブリック DNS) インスタンスのパブリック DNS 名を使用して接続するには、*instance-user-name*@*instance-public-dns-name* と入力します。
      + (IPv6) インスタンスに IPv6 アドレスがある場合、インスタンスの IPv6 アドレスを使用して接続するには、*instance-user-name*@*2001:db8::1234:5678:1.2.3.4* と入力します。

      インスタンスのユーザー名、およびインスタンスのパブリック DNS 名または IPv6 アドレスを取得する方法については、「[必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)」を参照してください。

   1. [**Port (ポート)**] の値が 22 であることを確認します。

   1. [**Connection type (接続タイプ)**] で [**SSH**] を選択します。  
![\[[PuTTY configuration] (PuTTY configuration) - [Session] (セッション)。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/putty-session-config.png)

1. (オプション) セッションをアクティブに保つため、定期的にキープアライブデータを自動的に送信するように PuTTY を設定できます。これは、セッションがアイドル状態になった際にインスタンスから切断されないようにするのに便利です。**[カテゴリー]** ペインで **[接続]** を選択し、**[キープアライブ間の秒数]** フィールドで必要な間隔を入力します。例えば、10 分間アイドル状態が続いた後にセッションが切断される場合、180 と入力して PuTTY を設定し、キープアライブデータを 3 分ごとに送信するようにします。

1. **[カテゴリー]** ペインで、**[接続]**、**[SSH]** の順に展開し、**[Auth]** を選択します。**[認証情報]** を選択します。

1. **[認証用プライベートキーファイル]** の横にある **[参照]** を選択します。**[プライベートキーファイルの選択]** ダイアログで、`.ppk`キーペア用に生成したファイルを選択します。ファイルをダブルクリックするか、**[プライベートキーファイルの選択]** ダイアログで **[開く]** を選択します。

1. (オプション) このセッションの後にインスタンスに再度接続する場合は、今後使用するためにセッション情報を保存できます。**[カテゴリー]** ペインで、**[セッション]** を選択します。**[保存されたセッション]** にセッションの名前を入力し、**[保存]** を選択します。

1. インスタンスに接続するには、**[開く]** を選択します。

1. このインスタンスに接続するのが初めての場合、PuTTY は接続先のホストを信頼するかどうかを確認するセキュリティアラートダイアログボックスを表示します。

   1. (オプション) セキュリティアラートダイアログボックスのフィンガープリントが、[(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint) で前に取得したフィンガープリントと一致することを確認します。これらのフィンガープリントが一致しない場合、「中間者 (MITM)」攻撃を受けている可能性があります。一致した場合は、次のステップに進んでください。

   1. [**Accept (承諾)**] を選択します。ウィンドウが開き、インスタンスに接続した状態になります。
**注記**  
プライベートキーを PuTTY フォーマットに変換するときにパスフレーズを指定した場合は、インスタンスにログインする際にそのパスフレーズを指定する必要があります。

インスタンスの接続でエラーが発生した場合は、[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)を参照してください。

# SCP を使用して Linux インスタンスにファイルを転送する
<a name="linux-file-transfer-scp"></a>

ローカルコンピュータと Linux インスタンスの間でファイルを転送する方法の 1 つとして、セキュアコピープロトコル (SCP) を使用します。SCP は、1 回限りのファイルコピーなどの簡単な操作に適しています。SCP は、SSH を使用してインスタンスに接続する時に使用するのと同じ .pem ファイルを使用して、ファイルの転送を保護します。ファイルの同期を維持する必要がある場合、またはファイルが大きい場合、**rsync** は SCP よりも高速で効率的です。**rsync** はデフォルトではプレーンテキストを使用してデータを転送するため、セキュリティ確保のため **rsync** は SSH 経由で使用すること。

SCP を使用して Linux インスタンスに接続する前に、以下のタスクを完了してください。
+ **一般的な前提条件を満たします。**
  + インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
  + [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **IP アドレスからのインバウンド SSH トラフィックを許可します。**

  インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。
+ **SCP クライアントをインストールします。**

  ほとんどの Linux、Unix、および Apple コンピュータには、デフォルトで SCP クライアントが含まれています。含まれていない場合は、OpenSSH プロジェクトから、SSH ツールの完全なスイートの無料実装が提供されており、これに SCP クライアントが含まれます。詳細については、[https://www.openssh.com](https://www.openssh.com) を参照してください。

以下では、インスタンスのパブリック DNS 名、またはインスタンスに IPv6 アドレスがある場合は IPv6 アドレスを使用し、SCP でファイルを転送する手順を示します。

**SCP を使用してコンピュータとインスタンス間でファイルを転送するには**

1. コンピュータ上のソースファイルの場所と、インスタンス上の送信先パスを決定します。以下の例では、プライベートキーファイルの名前が `key-pair-name.pem`、転送するファイルが `my-file.txt`、インスタンスのユーザー名が ec2-user、インスタンスのパブリック DNS の名前が `instance-public-dns-name` で、インスタンスの IPv6 アドレスが `2001:db8::1234:5678:1.2.3.4` です。
   + (パブリック DNS) インスタンスの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@instance-public-dns-name:path/
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、インスタンスの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。IPv6 アドレスは、(`\`) でエスケープした角かっこ (`[ ]`) で囲む必要があります。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/
     ```

1. SSH を使用してインスタンスに接続していない場合は、次のようなレスポンスが表示されます。

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
   can't be established.
   RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
   Are you sure you want to continue connecting (yes/no)?
   ```

   (オプション) オプションで、セキュリティアラートのフィンガープリントがインスタンスのフィンガープリントと一致することを確認できます。詳細については、「[(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint)」を参照してください。

   **yes** と入力してください。

1. 転送が成功した場合、レスポンスは以下のようになります。

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
   to the list of known hosts.
   my-file.txt                                100%   480     24.4KB/s   00:00
   ```

1. 逆の方向 (Amazon EC2 インスタンスからコンピュータ) にファイルを転送するには、ホストパラメータの順番を逆にします。例えば、次の例に示すように、EC2 インスタンスからローカルコンピュータの送信先に `my-file.txt` として `my-file2.txt` を転送できます。
   + (パブリック DNS) コンピュータの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。

     ```
     scp -i /path/key-pair-name.pem ec2-user@instance-public-dns-name:path/my-file.txt path/my-file2.txt
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、コンピュータの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。IPv6 アドレスは、(`\`) でエスケープした角かっこ (`[ ]`) で囲む必要があります。

     ```
     scp -i /path/key-pair-name.pem ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/my-file.txt path/my-file2.txt
     ```

# Amazon EC2 Linux インスタンスのシステムユーザーを管理する
<a name="managing-users"></a>

各 Linux インスタンスは、デフォルトの Linux システムユーザーで起動されます。インスタンスには、ユーザーを追加することも、削除することもできます。

デフォルトのユーザーの場合、[デフォルトのユーザー名](#ami-default-user-names)は、インスタンスの起動時に指定した AMI によって決まります。

**注記**  
デフォルトでは、パスワード認証とルートログインは無効になっており、また、sudo は有効化されています。インスタンスにログインするには、キーペアを使用する必要があります。ログインの詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。  
ユーザーは、インスタンスのパスワード認証とルートログインを許可できます。詳細については、「インスタンスのオペレーティングシステムに関するドキュメント」を参照してください。

**注記**  
Linux システムユーザーと IAM ユーザーを混同しないようにしてください。詳細については、『*IAM ユーザーガイド*』の[IAM ユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_iam-users)を参照してください。

**Topics**
+ [デフォルトのユーザー名](#ami-default-user-names)
+ [考慮事項](#add-user-best-practice)
+ [ユーザーの作成](#create-user-account)
+ [ユーザーの削除](#delete-user-account)

## デフォルトのユーザー名
<a name="ami-default-user-names"></a>

EC2 インスタンスのデフォルトのユーザー名は、インスタンスの起動時に指定した AMI によって決まります。

デフォルトのユーザー名は以下のとおりです。
+ Amazon Linux AMI の場合、ユーザー名は `ec2-user` です。
+ Centos AMI の場合、ユーザー名は `centos` または `ec2-user` です。
+ Debian AMI の場合は、ユーザー名は `admin` です。
+ Fedora AMI の場合、ユーザー名は `fedora` または `ec2-user` です。
+ FreeBSD AMI の場合、ユーザー名は `ec2-user` です。
+ RHEL AMI の場合、ユーザー名は `ec2-user` または `root` です。
+ SUSE AMI の場合、ユーザー名は `ec2-user` または `root` です。
+ Ubuntu AMI の場合、ユーザー名は `ubuntu` です。
+ Oracle AMI の場合、ユーザー名は `ec2-user` です。
+ Bitnami AMI の場合、ユーザー名は `bitnami` です。

**注記**  
他の Linux ディストリビューションのデフォルトのユーザー名を確認するには、AMI プロバイダーに確認してください。

## 考慮事項
<a name="add-user-best-practice"></a>

デフォルトのユーザーを使用するのが多くのアプリケーションに適しています。ただし、個人が自分のファイルとワークスペースを持つことができるように、ユーザーを追加することを選択できます。さらに、新しいユーザー用にユーザーを作成することは、デフォルトユーザーへのアクセス権を複数のユーザーに (経験のないユーザーも含めて) 与えるよりも、はるかに安全です。これはデフォルトのユーザーが不適切に使用された場合、システムにさまざまな損害を与える可能性があるためです。詳細については、[EC2 インスタンスの保護のヒント](https://aws.amazon.com/articles/tips-for-securing-your-ec2-instance/)を参照してください。

Linux システムのユーザーを使用してユーザーが EC2 インスタンスに SSH アクセスできるようにするには、SSH キーをユーザーと共有する必要があります。または、EC2 Instance Connect を使用して、SSH キーを共有および管理せずにユーザーにアクセスを提供できます。詳細については、「[パブリック IP アドレスと EC2 Instance Connect を使用して Linux インスタンスに接続する](connect-linux-inst-eic.md)」を参照してください。

## ユーザーの作成
<a name="create-user-account"></a>

最初にユーザーを作成してから、ユーザーがインスタンスに接続してログインできるようにする SSH パブリックキーを追加します。

**重要**  
この手順のステップ 1 では、新しいキーペアを作成します。キーペアはパスワードのように機能するため、安全に取り扱うことが非常に重要です。ユーザー用のキーペアを作成する場合は、プライベートキーを安全に送信する必要があります。または、ユーザーが自分のマシン上で独自のキーペアを作成し、プライベートキーを安全に保持することでステップ 1 と 2 を完了してから、あなたにパブリックキーを送信してステップ 3 以降の手順を完了してもらうこともできます。

**ユーザーを作成するには**

1. [新しいキーペアを作成します](create-key-pairs.md#having-ec2-create-your-key-pair)。この `.pem` ファイルは、ユーザーを作成するユーザーに提供する必要があります。ユーザーがインスタンスに接続するには、このファイルを使用する必要があります。

1. 前のステップで作成したキーペアからパブリックキーを取得します。

   ```
   $ ssh-keygen -y -f /path_to_key_pair/key-pair-name.pem
   ```

   コマンドは、次の例に示すように、パブリックキーを返します。

   ```
   ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6Vhz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXrlsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZqaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3RbBQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   ```

1. インスタンスに接続します。

1. **adduser** コマンドを使用して、ユーザーを作成し、システムに追加します (`/etc/passwd` ファイルにエントリが追加されます)。このコマンドでも、グループが作成され、ユーザーのホームディレクトリが作成されます。この例では、ユーザーは `newuser` という名前になります。
   + AL2023 と Amazon Linux 2

     AL2023 および Amazon Linux 2 では、デフォルトでパスワード認証が無効化された状態で、ユーザーが作成されます。

     ```
     [ec2-user ~]$ sudo adduser newuser
     ```
   + Ubuntu

     パスワード認証が無効化されたユーザーを作成するには、`--disabled-password` パラメータを含めます。

     ```
     [ubuntu ~]$ sudo adduser newuser --disabled-password
     ```

1. 新しいユーザーに切り替えて、作成するディレクトリとファイルが適切な所有権を持つようにします。

   ```
   [ec2-user ~]$ sudo su - newuser
   ```

   シェルセッションが新しいユーザーに切り替わったことを示すために `ec2-user` から `newuser` に変更するように求められます。

1. ユーザーに SSH パブリックキーを追加します。以下のサブステップで説明しているように、最初に SSH キーファイル用のディレクトリをユーザーのホームディレクトリに作成し、次にキーファイルを作成して、最後に公開キーをキーファイルに貼り付けます。

   1. `.ssh` ホームディレクトリに `newuser` ディレクトリを作成し、そのファイルのアクセス許可を `700` (所有者のみ、読み取り、書き込み、削除が可能) に変更します。

      ```
      [newuser ~]$ mkdir .ssh
      ```

      ```
      [newuser ~]$ chmod 700 .ssh
      ```
**重要**  
厳密なファイル権限がなければ、ユーザーはログインできません。

   1. `authorized_keys` という名前のファイルを `.ssh` ディレクトリに作成し、そのファイルのアクセス許可を `600` (所有者のみ、読み取りおよび書き込みが可能) に変更します。

      ```
      [newuser ~]$ touch .ssh/authorized_keys
      ```

      ```
      [newuser ~]$ chmod 600 .ssh/authorized_keys
      ```
**重要**  
厳密なファイル権限がなければ、ユーザーはログインできません。

   1. <a name="edit_auth_keys"></a>お好みのテキストエディタ (例: **vim** や **nano**) で、`authorized_keys` ファイルを開きます。

      ```
      [newuser ~]$ nano .ssh/authorized_keys
      ```

      **ステップ 2** で取得したパブリックキーをファイルに貼り付け、変更を保存します。
**重要**  
パブリックキーは、必ず 1 つの連続した行に貼り付けてください。パブリックキーを複数行に分割することはできません。

      これで、`authorized_keys` ファイルに追加したパブリックキーの対であるプライベートキーを使用して、インスタンスの `newuser` ユーザーにログインできるようになりました。Linux インスタンスに接続するさまざまな方法の詳細については、[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)を参照してください。

## ユーザーの削除
<a name="delete-user-account"></a>

ユーザーが不要になった場合、今後使用されないようにそのユーザーを削除できます。

システムからユーザーアカウントを削除するには、**userdel** コマンドを使用します。`-r` パラメータを指定すると、ユーザーのホームディレクトリとメールスプールが削除されます。ユーザーのホームディレクトリとメールスプールを維持するには、`-r` パラメータを省略します。

```
[ec2-user ~]$ sudo userdel -r olduser
```