簡単な手順: Azure 内に Linux VM 用の SSH 公開/秘密キーのペアを作成して使用する

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

Secure Shell (SSH) キーの組を使用すると、認証に SSH キーを使う仮想マシン (VM) を Azure に作成できます。 この記事では、Linux VM 用の SSH 公開キー ファイルと秘密キー ファイルのペアを短時間で生成して使用する方法について説明します。 この手順は、Azure Cloud Shell、macOS、または Linux ホストで実行できます。

問題のトラブルシューティングに役立つ情報については、「Azure Linux VM に対する SSH 接続の失敗、エラー、拒否のトラブルシューティング」を参照してください。

Note

既定では、SSH キーを使用して作成された VM は、パスワードが無効にされます。そのため、推測によるブルート フォース攻撃が大幅に困難になります。

詳しい背景と例については、SSH キー ペアを作成するための詳細な手順に関するページを参照してください。

Windows コンピューター上で、SSH キーを生成して使用するその他の方法については、「Azure 上の Windows で SSH キーを使用する方法」を参照してください。

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

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

Note

Linux VM ED25519 SSH キーのサポートは、ソブリン クラウドを含むすべてのリージョンでプレビュー段階になりました。

SSH キー ペアの作成

ssh-keygen コマンドを使用して、SSH 公開キーと秘密キーのファイルを生成します。 既定では、これらのファイルは ~/.ssh ディレクトリに作成されます。 秘密キー ファイルにアクセスするには、別の場所、および任意のパスワード (パスフレーズ) を指定できます。 同じ名前の SSH キー ペアが指定された場所にある場合、それらのファイルは上書きされます。

次のコマンドでは、RSA 暗号化と 4096 ビット長を使用して SSH キー ペアが作成されます。

ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa.pem

次のコマンドは、固定長 256 ビットの ED25519 暗号化を使用して SSH キー ペアを作成します。

ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem

Note

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

Azure CLI を使用して az vm create コマンドで VM を作成する場合は、必要に応じて --generate-ssh-keys オプションを使用して、SSH 公開キー ファイルと秘密キー ファイルを生成できます。 --ssh-dest-key-path オプションで指定されない限り、キー ファイルは ~/.ssh ディレクトリに格納されます。 SSH キーの組が既に存在していて、--generate-ssh-keys オプションが使用されている場合は、新しいキーの組は生成されず、代わりに既存のキーの組が使用されます。 次のコマンドで、VMnameRGnameUbuntuLTS を独自の値に置き換えます。

az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys

Note

az sshkey create コマンドは RSA 暗号化に対応していないため、ED25519 キー ペアの生成には使用できませんが、前述のように ssh-keygen を使用して ED25519キー ペアを作成し、その公開キーを使用して VM を作成できます。

VM をデプロイするときに SSH 公開キーを提供する

認証するために SSH キーを使用する Linux VM を作成するには、Azure portal、Azure CLI、Azure Resource Manager テンプレート、またはその他の方法を使用して VM を作成するときに SSH 公開キーを指定します。

SSH 公開キーの形式になじみのない場合は、次の cat コマンドでご利用の公開キーを表示できます。必要に応じて、~/.ssh/id_rsa.pub を独自の公開キー ファイルのパスとファイル名に置き換えます。

RSA キー ペア

cat ~/.ssh/id_rsa.pub

一般的な RSA 公開キーの値は次の例のようになります。

ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname

ED25519 キー ペア

cat ~/.ssh/id_ed25519.pub

一般的な ED25519 公開キーの値は次の例のようになります。

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname

公開キー ファイルの内容をコピーし、Azure portal または Resource Manager テンプレートに貼り付けて使用する場合は、行末の空白スペースをコピーしないように注意してください。 macOS で公開キーをコピーするには、公開キー ファイルを pbcopy にパイプすることができます。 Linux と同様に、xclip などのプログラムに公開キー ファイルをパイプすることができます。

キー ペアの作成時に別の場所を指定しない限り、Azure 内の Linux VM 上に配置した公開キーは、既定で ~/.ssh/ ディレクトリに格納されます。 Azure CLI 2.0 を使用して既存の公開キーで VM を作成するには、az vm create コマンドを --ssh-key-values オプション付きで使用することで、この公開キーの値または任意で場所を指定します。 次のコマンドでは、myVMmyResourceGroupUbuntuLTSazureusermysshkey.pub を実際の値に置き換えます。

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --ssh-key-values mysshkey.pub

VM で複数の SSH キーを使う場合は、この --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub のように、コンマ区切りのリストで入力できます。

VM への SSH 接続

公開キーを Azure VM に、秘密キーをローカル システム上にデプロイした状態で、ご利用の VM の IP アドレスまたは DNS 名を使用して、VM に SSH 接続します。 次のコマンドの azureusermyvm.westus.cloudapp.azure.com を、管理者のユーザー名と完全修飾ドメイン名 (または IP アドレス) に置き換えてください。

ssh azureuser@myvm.westus.cloudapp.azure.com

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

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

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

キー ペアを作成するときにパスフレーズを指定した場合は、サインイン プロセス中に入力を求められたときにそのパスフレーズを入力します。 VM は ~/.ssh/known_hosts ファイルに追加されます。Azure VM にある公開キーが変更されるか、サーバー名が ~/.ssh/known_hosts から削除されるまで、再度接続を求められることはありません。

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

次のステップ