簡単な手順: 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 では次のキーの種類がサポートされています。
- 最小長が 2,048 ビットの SSH プロトコル 2 (SSH-2) RSA (Rivest, Shamir, Adleman)
- 固定長 256 ビットの ED25519 キー
その他のキー形式、たとえば elliptic curve Diffie-Hellman (ECDH) や楕円曲線デジタル署名アルゴリズム (ECDSA) は現時点ではサポートされていません。
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
オプションが使用されている場合は、新しいキーの組は生成されず、代わりに既存のキーの組が使用されます。 次のコマンドで、VMname、RGname、UbuntuLTS を独自の値に置き換えます。
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
オプション付きで使用することで、この公開キーの値または任意で場所を指定します。 次のコマンドでは、myVM、myResourceGroup、UbuntuLTS、azureuser、mysshkey.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 接続します。 次のコマンドの azureuser と myvm.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 ポリシーを使用した仮想マシン アクセスの管理に関するページを参照してください。
次のステップ
SSH キー ペアを操作する詳細については、SSH キー ペアを作成して管理する詳細な手順に関するページを参照してください。
Azure VM への SSH 接続が困難な場合は、Azure Linux VM への SSH 接続に関するトラブルシューティングに関するページを参照してください。