使用 azure cli --generate-ssh-keys 自动生成的 SSH 密钥存储在 Windows 中的什么位置

Where are auto generated SSH keys stored in Windows using azure cli --generate-ssh-keys

我正在尝试从本地计算机使用 azure cli 创建 linux VM。我能够使用以下命令创建 VM,但是现在当我想通过 ssh 进入 VM 时,我需要在我的本地机器上有 public 密钥?

如何获得使用 ssh azureuser@publicIpAddress 连接到虚拟机所需的 public 密钥? --generate-ssh-keys 生成的 ssh 密钥在哪里?如何获取?

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --generate-ssh-keys

我使用具有提升权限的 PowerShell 7.0 运行 上面的命令

已解决

更新 1:

您可以在

下找到它

C:\Users\<<your-user-name>>\.ssh

当您第一次创建 VM 时,您也会收到以下消息

SSH key files 'C:\Users\<<your-user-name>>\.ssh\id_rsa' and 'C:\Users\<<your-user-name>>\.ssh\id_rsa.pub' have been generated under ~/.ssh to allow SSH access to the VM. If using machines without permanent storage, back up your keys to a safe location.

对于后续的 VM 创建,使用相同的密钥对,您不会再看到该消息。

(我使用 Windows OS 进行了验证,通过 Azure CLI 使用 RedHat:RHEL:7-RAW:7.4.2018010506 图像创建了一个 linux VM)

来自 MSDN 对于 --generate-ssh-keys:

Generate SSH public and private key files if missing. The keys will be stored in the ~/.ssh directory.

默认情况下会在 ~/.ssh 目录中创建私有 id_rsa 和 public id_rsa.pub SSH 密钥对(如果它们不存在)。如果您在该位置已经有现有的 SSH 密钥,它将只使用这些密钥并且 不会 覆盖它们。

在 Windows 上,这是 C:\Users\username\.ssh 目录。

此外,您还可以通过 --ssh-key-values:

传入特定的 SSH public 密钥路径
az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-values /path/to/public/key

如果您使用 ssh-keygen 在另一个位置创建了 SSH 密钥,这将特别有用。

pointed out in the comments, you could have a look at Generate keys automatically during deployment 了解更多信息。