

# 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
     ```