SSH を使用してマスターノードに接続する - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SSH を使用してマスターノードに接続する

セキュアシェル(SSH)とは、リモートコンピュータとの安全な接続を確立するために使用できるネットワークプロトコルです。接続後、ローカルコンピュータ上のターミナルは、リモートコンピュータで実行されているかのように動作します。ローカルで発行したコマンドがリモートコンピュータで実行され、リモートコンピュータからのコマンドの出力はターミナルウィンドウに表示されます。

AWS で SSH を使用するときは、クラウドで実行される仮想サーバーである EC2 インスタンスに接続しています。Amazon EMR で作業するときの SSH の最も一般的な用途は、クラスターのマスターノードとして動作する EC2 インスタンスへの接続です。

SSH を使用してマスターノードに接続すると、クラスターを監視し、操作できます。たとえば、マスターノードで Linux コマンドを発行したり、Hive や Pig などのアプリケーションをインタラクティブに実行したりできます。また、ディレクトリのブラウズやログファイルの読み取りなども可能です。SSH 接続にトンネルを作成して、マスターノードでホストされるウェブインターフェイスを表示することもできます。詳細については、「Amazon EMR クラスターでホストされているウェブインターフェイスを表示する」を参照してください。

SSH を使用してマスターノードに接続するには、マスターノードのパブリック DNS 名が必要です。また、マスターノードに関連付けられるセキュリティグループには、SSH 接続元のクライアントを含むソースからの SSH (TCP ポート 22) トラフィックを許可するインバウンドルールがある必要があります。クライアントからの SSH 接続を許可するルールの追加が必要になる場合があります。セキュリティグループのルールの変更に関する詳細については、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「セキュリティグループを使用してネットワークトラフィックを制御する」と「セキュリティグループにルールを追加する」を参照してください。

マスターノードのパブリック DNS 名を取得する

マスターパブリック DNS 名は、Amazon EMR コンソールと AWS CLI を使用して取得できます。

Console

Amazon EMR コンソールを使用して、マスターノードのパブリック DNS 名を取得するには

  1. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/) を開きます。

  2. [Cluster List] ページで、クラスターのリンクを選択します。

  3. [クラスターの詳細] ページの [概要] セクションに表示される [マスターパブリック DNS] 値を書き留めます。

    注記

    マスターパブリック DNS 名の横にある [SSH] リンクを選択して、マスターノードへの SSH 接続を作成する手順を表示することもできます。

CLI

AWS CLI を使用して、マスターノードのパブリック DNS 名を取得するには

  1. クラスター識別子を取得するには、次のコマンドを入力します。

    aws emr list-clusters

    出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "My cluster"
  2. クラスターのマスターパブリック DNS 名を含むクラスターインスタンスのリストを表示するには、次のいずれかのコマンドを入力します。j-2AL4XXXXXX5T9 の部分を、前のコマンドで返されたクラスター ID に置き換えてください。

    aws emr list-instances --cluster-id j-2AL4XXXXXX5T9

    または:

    aws emr describe-cluster --cluster-id j-2AL4XXXXXX5T9

    出力には、DNS 名と IP アドレスを含むクラスターインスタンスのリストが表示されます。PublicDnsName の値を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040779.263, "CreationDateTime": 1408040515.535 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-e89b45e7", "PublicDnsName": "ec2-###-##-##-###.us-west-2.compute.amazonaws.com" "PrivateDnsName": "ip-###-##-##-###.us-west-2.compute.internal", "PublicIpAddress": "##.###.###.##", "Id": "ci-12XXXXXXXXFMH", "PrivateIpAddress": "###.##.#.###"

詳細については、「AWS CLI の Amazon EMR コマンド」を参照してください。

Linux、Unix、または Mac OS X で SSH と Amazon EC2 プライベートキーを使用してマスターノードに接続する

プライベートキーファイルで認証された SSH 接続を作成するには、クラスター起動時に Amazon EC2 キーペアのプライベートキーを指定する必要があります。コンソールからクラスターを起動する場合は、[クラスターの作成] ページの [セキュリティとアクセス] セクションで Amazon EC2 キーペアのプライベートキーを指定します。キーペアへのアクセスに関する詳細は、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「Amazon EC2 のキーペア」を参照してください。

Linux コンピュータには、デフォルトで SSH クライアントが含まれている可能性があります。たとえば、ほとんどの Linux、Unix、および Mac OS オペレーティングシステムには OpenSSH がインストールされています。SSH クライアントがあるかどうかを確認するには、コマンドラインで ssh と入力します。ご使用のコンピュータでこのコマンドが認識されない場合、マスターノードに接続するために SSH クライアントをインストールします。OpenSSH プロジェクトが、SSH ツールの完全なスイートの無料実装を提供しています。詳細については、OpenSSH のウェブサイトを参照してください。

Linux、Unix、および Mac OS X で、Amazon EMR マスターノードへの SSH 接続を開く方法を次の手順に示します。

キーペアのプライベートキーのファイルアクセス許可を設定するには

Amazon EC2 キーペアのプライベートキーを使用して SSH 接続を作成する前に、キー所有者のみがファイルへのアクセス権限を持つように .pem ファイルに対するアクセス許可を設定しておく必要があります。これは、ターミナルまたは AWS CLI を使用して SSH 接続を作成するために必要です。

  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックの承認」を参照してください。

  2. .pem ファイルを見つけます。この手順では、ファイル名が mykeypair.pem であり、現在のユーザーのホームディレクトリに保存されていることを想定しています。

  3. 次のコマンドを入力してアクセス許可を設定します。~/mykeypair.pem の部分を、キーペアのプライベートキーファイルの完全修飾パスとファイル名に置き換えてください。例えばC:\Users\<username>\.ssh\mykeypair.pem

    chmod 400 ~/mykeypair.pem

    .pem ファイルに対するアクセス許可を設定していない場合、キーファイルが保護されておらず、キーが拒否されることを示すエラーが表示されます。接続するためにキーペアのプライベートキーファイルに対するアクセス許可を設定する必要があるのは、このファイルを最初に使用するときだけです。

ターミナルを使用してマスターノードに接続するには

  1. ターミナルウィンドウを開きます。Mac OS X で、[Applications] > [Utilities] > [Terminal] を選択します。他の Linux ディストリビューションでは、ターミナルは通常、[Applications] > [Accessories] > [Terminal] にあります。

  2. マスターノードへの接続を確立するには、次のコマンドを入力します。ec2-###-##-##-###.compute-1.amazonaws.com はクラスターのマスターパブリック DNS 名に、~/mykeypair.pem.pem ファイルの完全修飾パスとファイル名に置き換えます。例えばC:\Users\<username>\.ssh\mykeypair.pem

    ssh hadoop@ec2-###-##-##-###.compute-1.amazonaws.com -i ~/mykeypair.pem
    重要

    Amazon EMR マスターノードに接続するときは、ログイン名 hadoop を使用する必要があります。このログイン名を使用しない場合、Server refused our key のようなエラーが表示されることがあります。

  3. 警告は、接続先ホストの正当性を検証できないことを示しています。yes を入力して、操作を続けます。

  4. マスターノードに対する操作が終了したら、次のコマンドを入力して SSH 接続を閉じます。

    exit

SSH を使用したマスターノードへの接続に問題がある場合は、「インスタンスへの接続に関するトラブルシューティング」を参照してください。

Windows で SSH を使用してマスターノードに接続する

Windows ユーザーは、PuTTY などの SSH クライアントを使用して、マスターノードに接続できます。Amazon EMR マスターノードに接続する前に、PuTTY と PuTTYgen をダウンロードしてインストールする必要があります。これらのツールは、PuTTY のダウンロードページからダウンロードできます。

PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (.pem) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (.ppk) に変換します。PuTTY を使用してマスターノードへの接続を試みる前に、キーをこの形式 (.ppk) に変換する必要があります。

キーの変換について詳しくは、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「PuTTYgen を使用してプライベートキーを変換する」を参照してください。

PuTTY を使用してマスターノードに接続するには

  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックの承認」を参照してください。

  2. putty.exe を開きます。Windows のプログラムの一覧から PuTTY を起動することもできます。

  3. 必要に応じて、[Category] リストで、[Session] を選択します。

  4. [ホスト名] (または IP アドレス)hadoop@ MasterPublicDNS と入力します。たとえば、hadoop@ec2-###-##-##-###.compute-1.amazonaws.com です。

  5. [Category] リストで、[Connection]、[SSH] の順に選択し、[Auth] を選択します。

  6. [Private key file for authentication] では、[Browse] をクリックし、以前に生成した .ppk ファイルを選択します。

  7. [Open] を選択し、[Yes] をクリックして PuTTY のセキュリティ警告を閉じます。

    重要

    マスターノードにログインするときに、ユーザー名の入力を求められた場合は、「hadoop」と入力します。

  8. マスターノードに対する操作が終了したら、PuTTY を閉じることで SSH 接続を閉じることができます。

    注記

    SSH 接続のタイムアウト防止には、[Category] リストで [Connection] をクリックし、[Enable TCP_keepalives] オプションを選択します。PuTTY にアクティブな SSH セッションがある場合は、PuTTY のタイトルバーのコンテキストを開き (右クリック)、[Change Settings] を選択することで設定を変更できます。

SSH を使用したマスターノードへの接続に問題がある場合は、「インスタンスへの接続に関するトラブルシューティング」を参照してください。

AWS CLI を使用してマスターノードに接続する

Windows でも、Linux、Unix、および Mac OS X でも、AWS CLI を使用してマスターノードへの SSH 接続を作成できます。プラットフォームに関係なく、マスターノードのパブリック DNS 名と、Amazon EC2 キーペアのプライベートキーが必要です。Linux、Unix、Mac OS X などで AWS CLI を使用している場合は、「キーペアのプライベートキーのファイルアクセス許可を設定するには」に示されているように、プライベートキー (.pem または .ppk) ファイルに対するアクセス権限も設定する必要があります。

AWS CLI を使用してマスターノードに接続するには

  1. インバウンド SSH トラフィックを許可していることを確認します。手順については、「接続する前に: インバウンドトラフィックの承認」を参照してください。

  2. クラスター識別子を取得するには、次のように入力します。

    aws emr list-clusters

    出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "AWS CLI cluster"
  3. マスターノードへの SSH 接続を開くには、次のコマンドを入力します。次の例で、j-2AL4XXXXXX5T9 をクラスター ID に、~/mykeypair.key.pem ファイル (Linux、Unix、および Mac OS X の場合) または .ppk ファイル (Windows の場合) の完全修飾パスとファイル名に置き換えてください。例えばC:\Users\<username>\.ssh\mykeypair.pem

    aws emr ssh --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
  4. マスターノードに対する操作が終了したら、AWS CLI ウィンドウを閉じます。

    詳細については、「AWS CLI の Amazon EMR コマンド」を参照してください。SSH を使用したマスターノードへの接続に問題がある場合は、「インスタンスへの接続に関するトラブルシューティング」を参照してください。