Azure 上の Windows で SSH キーを使用する方法

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事は、secure shell (SSH) キーを作成し、それを使用して Azure の Linux 仮想マシン (VM) に接続する Windows ユーザーを対象としています。 また、Azure portal で SSH キーを生成および保存して、このポータルで VM を作成するときに使用することもできます。

Linux または macOS クライアントから SSH キーを使用するには、簡単な手順を参照してください。 SSH の詳細については、「詳細な手順: Azure の Linux VM に対する認証用に SSH キーを作成して管理する」を参照してください。

SSH とキーの概要

SSH は、セキュリティで保護されていない接続においてセキュリティで保護されたサインインを可能にする、暗号化された接続プロトコルです。 SSH は、Azure でホストされる Linux VM の既定の接続プロトコルです。 SSH 自体は暗号化された接続を提供しますが、SSH でパスワードを使用すると、VM はブルートフォース攻撃に対して脆弱になります。 SSH を介して VM に接続する場合は、公開/秘密キーの組を使用することをお勧めします。これは "SSH キー" とも呼ばれています。

公開/秘密キーの組は、ご利用のフロント ドアのロックに似ています。 ロックは パブリックに公開され、適切なキーを持つユーザーがドアを開くことができます。 キーは非公開であり、ドアのロックを解除するために使用できるため、信頼できるユーザーにのみ与えられます。

  • "公開キー" は、Linux VM の作成時にその VM 上に配置されます。

  • 秘密キーは、ローカル システム上に残ります。 このキーは安全に保管してください。 共有しないでください。

ご利用の Linux VM に接続する場合、その VM によって SSH クライアントのテストが行われ、適切な秘密キーを持っているかどうかが確認されます。 クライアントに秘密キーがある場合、VM へのアクセス権が付与されます。

組織のセキュリティ ポリシーに応じて、単一のキーの組を再利用して複数の Azure VM およびサービスにアクセスできます。 VM ごとに異なるキーの組を用意する必要はありません。

ご自分の公開キーはだれとでも共有できますが、ご自分の秘密キーへのアクセス権を所有するのは自分 (またはローカル セキュリティ インフラストラクチャ) のみとする必要があります。

サポートされる SSH キーの形式

Azure は、現在、SSH プロトコル 2 (SSH-2) の RSA 公開キー/秘密キーのペア (最小長: 2048 ビット) をサポートしています。 その他のキーの形式 (ED25519 や ECDSA など) はサポートされていません。

SSH クライアント

最近のバージョンの Windows 10 には、OpenSSH クライアント コマンドが用意されています。これを使用すれば、PowerShell またはコマンド プロンプトから SSH キーを作成および使用して、SSH 接続を行うことができます。

また、Azure Cloud Shell 内の Bash を使用して VM に接続することもできます。 Cloud Shell は、Azure portal から、Web ブラウザー内で使用することも、Azure アカウント拡張機能を使用して Visual Studio Code のターミナルとして使用することもできます。

また、Linux 用 Windows サブシステムをインストールして、SSH 経由で VM に接続し、Bash シェル内で他のネイティブ Linux ツールを使用することもできます。

SSH キー ペアを作成する

SSH キーを作成して管理する最も簡単な方法は、ポータルを使用してそれらを作成および保存し、再利用できるようにすることです。

SSH キーを生成して格納する方法の説明に従って、az sshkey create コマンドを使用して Azure CLI でキーの組を作成することもできます。

PowerShell またはコマンド プロンプトから ssh-keygen コマンドを使用して、ローカル コンピューターに SSH キーの組を作成するには、次のコマンドを入力します。

ssh-keygen -m PEM -t rsa -b 2048

ファイル名を入力するか、かっこで示されている既定値を使用します (C:\Users\username/.ssh/id_rsa など)。 ファイルのパスフレーズを入力します。パスフレーズを使用しない場合はパスフレーズを空白のままにします。

独自のキーを使用して VM を作成する

認証で SSH キーを使用する Linux VM を作成するには、VM を作成するときに、自分の SSH 公開キーを指定してください。

Azure CLI を使用する場合は、az vm create および --ssh-key-value パラメーターを使用して、公開キーのパスとファイル名を指定します。

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image Ubuntu2204\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

PowerShell では、New-AzVM を使用し、' を使用して SSH キーを VM 構成に追加します。 例については、「クイックスタート: PowerShell を使用して Azure に Linux 仮想マシンを作成する」を参照してください。

ポータルを使用して多数のデプロイを実行する場合は、Azure に自分の公開キーをアップロードすることをお勧めします。そうすると、ポータルから VM を作成するときに簡単に選択できます。 詳細については、「SSH キーのアップロード」を参照してください。

VM に接続する

公開キーを Azure VM に、秘密キーをローカル システム上に配置した状態で、VM の IP アドレスまたは DNS 名を使用して、VM に SSH 接続します。 次のコマンドの azureuser10.111.12.123 を、管理者のユーザー名、IP アドレス (または完全修飾ドメイン名)、および自分の秘密キーへのパスに置き換えてください。

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

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

実行コマンドを使用したホストのフィンガープリントの検証を示しているスクリーンショット。

CLI を使用してコマンドを実行するには、az vm run-command invoke コマンドを使用します。

キーの組を作成したときにパスフレーズを構成してある場合、入力を求められたら、そのパスフレーズを入力します。

VM が Just-In-Time アクセス ポリシーを使用している場合、VM に接続するにはアクセス権を要求する必要があります。 Just-In-Time ポリシーの詳細については、Just in Time ポリシーを使用した仮想マシン アクセスの管理に関するページを参照してください。

次のステップ