共用方式為


如何使用安全殼層 (SSH) 連線並登入執行 Windows 的 Azure 虛擬機器

適用於:✔️ Windows VM ✔️ 彈性擴展集

Win32 OpenSSH 專案透過在 Windows 中提供原生支援,在各個地方使用安全殼層進行遠端連線。 此功能是由 Windows Server 2019 和更新版本所提供,而且可使用虛擬機器 (VM) 延伸模組新增至舊版 Windows。

下列範例會使用變數。 您可以在環境中設定變數,如下所示。

Shell 範例
Bash/ZSH myResourceGroup='resGroup10'
PowerShell $myResourceGroup='resGroup10'

啟用 SSH

首先,您必須在 Windows 機器中啟用 SSH。

部署適用於 Windows 的 SSH 延伸模組。 此延伸模組可自動化安裝 Win32 OpenSSH 解決方案,類似於在較新版本的 Windows 中啟用該功能。 使用下列範例來部署延伸模組。

az vm extension set --resource-group $myResourceGroup --vm-name $myVM --name WindowsOpenSSH --publisher Microsoft.Azure.OpenSSH --version 3.0

開啟 TCP 通訊埠

確保開啟適當的連接埠 (預設為 TCP 22) 以允許連線到 VM。

az network nsg rule create -g $myResourceGroup --nsg-name $myNSG -n allow-SSH --priority 1000 --source-address-prefixes 208.130.28.4/32 --destination-port-ranges 22 --protocol TCP
  • 您的 VM 必須有公用 IP 位址。 若要檢查您的 VM 是否有公用 IP 位址 ,請從左側功能表中選取 [概觀],然後查看 [網路] 區段。 如果您在 [公用 IP 位址] 旁看到 IP 位址,則表示您的 VM 具有公用 IP。 若要深入瞭解如何將公用 IP 位址新增至現有的 VM,請參閱將公用 IP 位址與虛擬機器建立關聯

  • 確認您的 VM 正在執行。 在 [概觀] 索引標籤的 [基本資訊] 區段中,確認 VM 的狀態為 [正在執行]。 若要啟動 VM,請選取頁面頂端的 [啟動]。

驗證

您可以透過使用者名稱和密碼或是 SSH 金鑰向 Windows 機器進行驗證。 Azure 不支援自動將公開金鑰佈建至 Windows 機器,不過您可以使用 RunCommand 延伸模組複製金鑰。

SSH 和金鑰的概觀

SSH 是已加密連線通訊協定,可透過不安全的連線提供安全登入。 雖然 SSH 提供加密的連線,但使用密碼搭配 SSH 連線仍會讓 VM 容易遭受暴力密碼破解攻擊。 建議您使用公開-私密金鑰組 (也稱為 SSH 金鑰),透過 SSH 連線至 VM。

  • 公開金鑰會放置在 VM 上。

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

當您使用 SSH 用戶端連線到 VM (具有公鑰) 時,遠程 VM 會測試用戶端以確保其具有正確的私密金鑰。 如果用戶端具有私密金鑰,則會獲得 VM 的存取權。

根據組織的安全性原則,您可以重複使用單一公用/私密金鑰組來存取多個 Azure VM 和服務。 您想要存取的每個 VM 或服務都不需要各有一對金鑰。

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

支援的 SSH 金鑰格式

Azure 目前支援下列金鑰類型:

  • SSH 通訊協定 2 (SSH-2) RSA (Rivest, Shamir, Adleman) 最小長度為 2048 位
  • ED25519長度為256位的金鑰

目前不支援其他主要格式,例如橢圓曲線 Diffie–Hellman (ECDH) 和橢圓曲線數位簽名演算法 (ECDSA)。

使用 RunCommand 延伸模組複製公開金鑰。

RunCommand 延伸模組提供簡易的解決方案,可將公開金鑰複製到 Windows 機器,並確定檔案具有正確的權限。

az vm run-command invoke -g $myResourceGroup -n $myVM --command-id RunPowerShellScript --scripts "MYPUBLICKEY | Add-Content 'C:\ProgramData\ssh\administrators_authorized_keys' -Encoding UTF8;icacls.exe 'C:\ProgramData\ssh\administrators_authorized_keys' /inheritance:r /grant 'Administrators:F' /grant 'SYSTEM:F'"

使用 Az CLI 連線

使用 Az SSH 命令連線到 Windows 機器。

az ssh vm  -g $myResourceGroup -n $myVM --local-user $myUsername

您也可以透過 SSH 連線為特定 TCP 連接埠建立網路通道。 良好的使用案例之一是將遠端桌面預設為連接埠 3389。

az ssh vm  -g $myResourceGroup -n $myVM --local-user $myUsername -- -L 3389:localhost:3389

從 Azure 入口網站連線

  1. 前往 Azure 入口網站以連線至 VM。 搜尋並選取 [虛擬機器]
  2. 然後從清單中選取虛擬機器。
  3. 從左側功能表中選取 [連線]
  4. 請選取適合您慣用連線方式的選項。 入口網站將帶您瞭解連線的必要條件。

下一步

了解如何將檔案傳送至現有的 VM,請參閱使用 SCP 將檔案移至和移出 VM