Linux VM に接続する

Azure で Linux 仮想マシンをホストする場合、その VM にアクセスするための最も一般的な方法は、Secure Shell プロトコル (SSH) を使用することです。 Linux と Windows で一般的に使用される任意の標準 SSH クライアントを介して接続できます。 任意のブラウザーから Azure Cloud Shell を使用することもできます。

このドキュメントでは、パブリック IP が割り当てられた VM に SSH で接続する方法について説明します。 パブリック IP がない VM に接続する必要がある場合は、Azure Bastion サービスに関する記事を参照してください。

前提条件

  • SSH キーの組が必要です。 キーの組がまだない場合、デプロイ プロセス中に Azure によって作成されます。 手動での作成に関して不明な点がある場合は、「Azure 内に Linux VM 用の SSH 公開/秘密キーのペアを作成して使用する」を参照してください。

  • 既存のネットワーク セキュリティ グループ (NSG) が必要です。 ほとんどの VM には既定で NSG がありますが、まだない場合は、作成して手動でアタッチできます。 詳細については、「ネットワーク セキュリティ グループを作成、変更、削除」をご覧ください。

  • Linux VM に接続するには、適切なポートを開く必要があります。 通常、SSH ではポート 22 が使用されます。 次の手順はポート 22 を想定していますが、他のポート番号でも手順は同じです。 SSH 用の適切なポートが開放されていることは、トラブルシューティング ツールを使用するか、VM の設定を手動でチェックすることで確認できます。 ポート 22 が開放されていることを確認するには:

    1. VM のページ上で、左側のメニューから [ネットワーク] を選択します。

    2. [ネットワーク] ページで、VM への接続に使用するコンピューターの IP アドレスを送信元とするポート 22 の TCP を許可する規則があるかどうかを確認します。 規則が存在する場合は、次のセクションに進んでください。

      SSH 接続を許可する規則が既に存在するかどうかを確認する方法を示すスクリーンショット。

    3. 規則が存在しない場合は、[受信ポートの規則を追加する] を選択して追加します。

    4. [サービス] で、ドロップダウンから [SSH] を選択します。

      新しい NSG 規則を作成するときに SSH を選択する場所を示すスクリーンショット。

    5. 必要に応じて [優先度][ソース] を編集します。

    6. [名前] には「SSH」と入力します。

    7. 終了したら、 [追加] を選択します。

    8. 受信ポート規則のテーブルに SSH 規則が追加されます。

  • VM にはパブリック IP アドレスが必要です。 VM にパブリック IP アドレスがあるかどうかを確認するには、左側のメニューから [概要] を選択し、[ネットワーク] セクションに注目します。 [パブリック IP アドレス] の横に IP アドレスが表示されている場合、VM にはパブリック IP が割り当てられています。

    VM にパブリック IP アドレスがない場合は、このように表示されます。

    パブリック IP がない場合に表示されるネットワーク セクションを示すスクリーンショット。

    既存の VM にパブリック IP アドレスを追加する方法について詳しくは、「仮想マシンへのパブリック IP アドレスの関連付け」を参照してください。

  • VM が実行されていることを確認します。 [概要] タブの [基本] セクションで、VM の状態が [実行中] になっていることを確認します。 VM を起動するには、ページの上部にある [開始] を選択します。

    仮想マシンが実行中状態であることを確認する方法を示すスクリーンショット。

接続に問題がある場合は、ポータルを使用することもできます。

  1. Azure portal に移動して、VM に接続します。 [仮想マシン] を検索して選択します。
  2. 一覧から仮想マシンを選択します。
  3. 左側のメニューから [接続] を選択します。
  4. お好みの接続方法に合ったオプションを選択します。 ポータルで、接続の前提条件を確認することができます。

VM に接続します

上記の前提条件を満たしたら、VM に接続する準備は完了です。 任意の SSH クライアントを開きます。 SSH クライアント コマンドは、通常、Linux、macOS、Windows に含まれています。 Windows 7 以前を使用している場合は、Win32 OpenSSH が既定で含まれていないため、WSL をインストールするか、ブラウザーから Azure Cloud Shell を使用することを検討してください。

Note

次の例では、SSH キーの形式が key.pem であることを想定しています。 CLI または Azure PowerShell を使用してキーをダウンロードした場合は、id_rsa または ED25519 形式である可能性があります。

新しいキーの組を使用した SSH

  1. 公開キーと秘密キーが正しいディレクトリにあることを確認します。 ディレクトリは通常 ~/.ssh です。

    通常、キーを手動で生成した場合、または CLI で生成した場合、キーは既にそこに存在します。 一方、Azure portal から pem 形式でダウンロードした場合は、それらを適切な場所に移動する必要があります。 キーの移動は、mv PRIVATE_KEY_SOURCE PRIVATE_KEY_DESTINATION の構文で実行されます。

    たとえばキーが Downloads フォルダーに存在し、SSH キーの 名前が myKey.pem である場合、次のように入力します。

    mv /Downloads/myKey.pem ~/.ssh
    

    注意

    WSL を使用している場合、ローカル ファイルは mnt/c/ ディレクトリにあります。 したがって、ダウンロード フォルダーと SSH キーへのパスは /mnt/c/Users/{USERNAME}/Downloads/myKey.pem になります

  2. 次を実行して、秘密キーへの読み取り専用アクセス権があることを確認します

    chmod 400 ~/.ssh/myKey.pem
    
  3. ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP という構文で SSH コマンドを実行します。

    たとえば、作成したユーザー名が azureuser で、VM の パブリック IP アドレスが 20.51.230.13 である場合、次のように入力します。

    ssh -i ~/.ssh/myKey.pem azureuser@20.51.230.13
    
  4. 返されたフィンガープリントを確認します。

    この VM にこれまで接続したことがない場合は、ホストのフィンガープリントを確認するように求められます。 提示されたフィンガープリントを受け入れたくなりますが、そのようにすると、中間者攻撃の危険性にさらされます。 ホストのフィンガープリントは常に検証するようにしてください。 これは、クライアントから初めて接続するときにのみ行う必要があります。 ポータルからホストのフィンガープリントを取得するには、実行コマンド機能を使用してコマンドを実行します。

    ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
    
  5. Success! これで VM に接続されるはずです。 接続できない場合は、SSH 接続のトラブルシューティングに関する記事を参照してください。

既存の公開キーを使用した SSH

  1. SSH クライアントで次のコマンドを実行します。 この例では、20.51.230.13 が VM のパブリック IP アドレスで、azureuser が、VM の作成時に作成したユーザー名です。

    ssh azureuser@20.51.230.13
    
  2. 返されたフィンガープリントを確認します。

    現在の SSH クライアントから目的の VM にこれまで接続したことがない場合は、ホストのフィンガープリントを確認するように求められます。 既定のオプションは、提示されたフィンガープリントを受け入れるものですが、"中間者攻撃" の危険性にさらされます。 ホストのフィンガープリントは常に検証する必要があります。これは、クライアントが初めて接続するときにのみ行う必要があります。 ポータルからホストのフィンガープリントを取得するには、実行コマンド機能を使用して次のコマンドを実行します。

    ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
    
  3. Success! これで VM に接続されるはずです。 接続できない場合は、トラブルシューティング ガイドを参照してください。

パスワード認証

警告

この種類の認証方法は、SSH キーの組と比べてセキュリティが低いため、推奨されません。

  1. SSH クライアントで次のコマンドを実行します。 この例では、20.51.230.13 が VM のパブリック IP アドレスで、azureuser が、VM の作成時に作成したユーザー名です。

    ssh azureuser@20.51.230.13
    

    パスワードまたはユーザー名を忘れた場合は、Azure VM へのアクセスのリセットに関する記事を参照してください。

  2. 返されたフィンガープリントを確認します。

    現在の SSH クライアントから目的の VM にこれまで接続したことがない場合は、ホストのフィンガープリントを確認するように求められます。 既定のオプションは、提示されたフィンガープリントを受け入れるものですが、"中間者攻撃" の危険性にさらされます。 ホストのフィンガープリントは常に検証する必要があります。これは、クライアントが初めて接続するときにのみ行う必要があります。 ポータルからホストのフィンガープリントを取得するには、実行コマンド機能を使用して次のコマンドを実行します。

    ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
    
  3. Success! これで VM に接続されるはずです。 接続できない場合は、SSH 接続のトラブルシューティングに関する記事を参照してください。

次のステップ

既存の VM にファイルを転送する方法について確認します。「SCP を使用して VM との間でファイルを移動する」を参照してください。