如何在 Azure 上搭配 Windows 使用 SSH 金鑰

適用于: : Heavy_check_mark: Linux vm: Heavy_check_mark:彈性的擴展集

本文適用于想要 建立和使用 安全 shell (SSH) 金鑰的 Windows 使用者,以 連接到 Azure 中 (vm) 的 Linux 虛擬機器。 您也可以在入口網站中建立 Vm 時,在要使用 的 Azure 入口網站中產生並儲存 SSH 金鑰

若要從 Linux 或 macOS 用戶端使用 SSH 金鑰,請參閱 快速步驟。 如需 SSH 的詳細資訊,請參閱 詳細步驟:在 Azure 中建立和管理 LINUX VM 的 ssh 金鑰以進行驗證

SSH 和金鑰的概觀

SSH 是允許透過不安全連線進行安全登入的加密連線通訊協定。 SSH 是 Azure 中裝載 Linux VM 的預設連線通訊協定。 雖然 SSH 本身提供加密的連線,但搭配使用密碼與 SSH 仍會讓 VM 容易遭受暴力密碼破解攻擊。 建議使用公開/私密金鑰組(也稱為 SSH 金鑰)透過 SSH 連線至 VM。

公開/私用金鑰組就像是您的前門鎖定。 鎖定會公開至 公用,任何具有適當索引鍵的人都可以開啟門。 金鑰是 用的,而且只會提供給您信任的人員,因為它可用來解除鎖定大門。

  • 當您建立 VM 時,會將 公開金鑰 放在您的 Linux VM 上。

  • 「私密金鑰」會保留在您的本機系統上。 保護此私密金鑰。 不要共用它。

當您連接到 Linux VM 時,VM 會測試 SSH 用戶端,以確定其具有正確的私密金鑰。 如果用戶端具有私密金鑰,則會獲得 VM 的存取權。

根據您組織的安全性原則,您可以重複使用單一金鑰組來存取多個 Azure Vm 和服務。 每個 VM 不需要有一組不同的金鑰。

您的公開金鑰可以與任何人共用,但只有您 (或您的本機安全性基礎結構) 才能存取您的私密金鑰。

支援的 SSH 金鑰格式

Azure 目前支援 SSH 通訊協定 2 (SSH-2) RSA 公開/私密金鑰組,最小長度為 2048 位元。 不支援其他金鑰格式,例如 ED25519 和 ECDSA。

SSH 用戶端

Windows 10 的最新版本包含OpenSSH 用戶端命令,可建立和使用 ssh 金鑰,並從 PowerShell 或命令提示字元進行 ssh 連線。 這是從 Windows 電腦建立至 Linux VM SSH 連線的最簡單方式。

您也可以在 Azure Cloud Shell 中使用 Bash 連接到您的 VM。 您可以使用網頁瀏覽器中的 Cloud Shell、從Azure 入口網站,或使用Azure 帳戶擴充功能,作為 Visual Studio Code 中的終端機。

您也可以安裝Windows 子系統 Linux 版,透過 SSH 連線至您的 VM,並在 Bash shell 中使用其他原生 Linux 工具。

建立 SSH 金鑰組

使用命令建立 SSH 金鑰組 ssh-keygen 。 輸入檔案名,或使用括弧中顯示的預設 (例如 C:\Users\username/.ssh/id_rsa) 。 輸入檔案的複雜密碼,如果您不想要使用複雜密碼,請將複雜密碼保留空白。

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

使用您的金鑰建立 VM

若要建立使用 SSH 金鑰進行驗證的 Linux VM,請在建立 VM 時,提供您的 SSH 公開金鑰。

使用 Azure CLI,您可以使用和參數指定公開金鑰的路徑和檔案名 az vm create --ssh-key-value

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

使用 PowerShell, New-AzVM 並使用 ' 將 SSH 金鑰新增至 VM 設定。 如需範例,請參閱 快速入門:使用 PowerShell 在 Azure 中建立 Linux 虛擬機器

如果您使用入口網站進行大量的部署,您可能會想要將公開金鑰上傳至 Azure,以便在從入口網站建立 VM 時輕鬆地選取該金鑰。 如需詳細資訊,請參閱Upload SSH 金鑰

連接到您的 VM

公開金鑰已部署到您的 Azure VM 且私密金鑰儲存在本機系統中,此時可以使用 VM 的 IP 位址或 DNS 名稱,透過 SSH 連線到您的 VM。 將下列命令中的 >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 原則管理虛擬機器存取

後續步驟