调用 New-AzVM 时将 AzVMSshPublicKey 添加到 vmConfig 失败
Add-AzVMSshPublicKey to vmConfig fails when calling New-AzVM
我正在关注 windows quickstart for creating a VM in azure powershell
我被困在这里:
# Configure the SSH key
$sshPublicKey = cat ~/.ssh/id_rsa.pub
Add-AzVMSshPublicKey `
-VM $vmconfig `
-KeyData $sshPublicKey `
-Path "/home/azureuser/.ssh/authorized_keys"
首先我认为下面的代码是错误的,因为 cat
returns System.String[]
和 运行 逐字逐句地导致
Add-AzVMSshPublicKey : Cannot convert 'System.Object[]' to the type 'System.String'
所以...我改为使用 Get-Content "./path/to/file" -raw
,它只是 returns 一个字符串和命令 运行s 而没有错误
现在当我运行
New-AzVM `
-ResourceGroupName $resourceGroupName `
-Location $location -VM $vmConfig
我收到以下错误,这意味着我之前设置的 keyData 设置不正确。
New-AzVM : The value of parameter linuxConfiguration.ssh.publicKeys.keyData is invalid.
我发现了问题 - 所以 Azure 密钥保管库在表单中为我提供了一个 PEM public 密钥
-----开始 PUBLIC 键-----
MIIBojANBgkqhkiG9w0BAQEFAAO...
...
...
...
...0CS94AFAgMBAAE=
-----结束 PUBLIC 关键-----
而 VM 期望它采用 OpenSSH 格式
ssh-rsa ..........
我试过用
ssh-keygen -i -m PKCS8 -f ./key.pem
但没有任何输出
更新
Aaa 是 powershell issue
首先,本教程是通过 Azure PowerShell 创建 Linux VM 的指南,而不是 Windows。其次,命令 cat
只是输出文件的内容。命令 $sshPublicKey = cat ~/.ssh/id_rsa.pub
在字符串中创建一个变量:
命令Add-AzVMSshPublicKey
的参数-KeyData
也需要一个字符串:
所以PowerShell命令没有问题,所有命令在我这边都可以正常工作。并且报错显示密钥数据的值无效,你需要做的是确定SSH public密钥是否有问题。
要从 Azure 密钥保管库获取此密钥,
Get-AzKeyVaultKey -OutFile *filename*
returns public 键入 PEM Form
-----BEGIN PUBLIC KEY------
....
-----END PUBLIC KEY-----
vm要求关键数据为OpenSSH格式的一行
ssh-rsa ....... mykeylabel
但是 Powershell 的 ssh-keygen 与它的 UNIX 对应物不同,不能在这些格式之间转换,因为它有一个 open bug
我正在关注 windows quickstart for creating a VM in azure powershell
我被困在这里:
# Configure the SSH key
$sshPublicKey = cat ~/.ssh/id_rsa.pub
Add-AzVMSshPublicKey `
-VM $vmconfig `
-KeyData $sshPublicKey `
-Path "/home/azureuser/.ssh/authorized_keys"
首先我认为下面的代码是错误的,因为 cat
returns System.String[]
和 运行 逐字逐句地导致
Add-AzVMSshPublicKey : Cannot convert 'System.Object[]' to the type 'System.String'
所以...我改为使用 Get-Content "./path/to/file" -raw
,它只是 returns 一个字符串和命令 运行s 而没有错误
现在当我运行
New-AzVM `
-ResourceGroupName $resourceGroupName `
-Location $location -VM $vmConfig
我收到以下错误,这意味着我之前设置的 keyData 设置不正确。
New-AzVM : The value of parameter linuxConfiguration.ssh.publicKeys.keyData is invalid.
我发现了问题 - 所以 Azure 密钥保管库在表单中为我提供了一个 PEM public 密钥 -----开始 PUBLIC 键----- MIIBojANBgkqhkiG9w0BAQEFAAO... ... ... ... ...0CS94AFAgMBAAE= -----结束 PUBLIC 关键-----
而 VM 期望它采用 OpenSSH 格式
ssh-rsa ..........
我试过用 ssh-keygen -i -m PKCS8 -f ./key.pem 但没有任何输出
更新 Aaa 是 powershell issue
首先,本教程是通过 Azure PowerShell 创建 Linux VM 的指南,而不是 Windows。其次,命令 cat
只是输出文件的内容。命令 $sshPublicKey = cat ~/.ssh/id_rsa.pub
在字符串中创建一个变量:
命令Add-AzVMSshPublicKey
的参数-KeyData
也需要一个字符串:
所以PowerShell命令没有问题,所有命令在我这边都可以正常工作。并且报错显示密钥数据的值无效,你需要做的是确定SSH public密钥是否有问题。
要从 Azure 密钥保管库获取此密钥,
Get-AzKeyVaultKey -OutFile *filename*
returns public 键入 PEM Form
-----BEGIN PUBLIC KEY------
....
-----END PUBLIC KEY-----
vm要求关键数据为OpenSSH格式的一行
ssh-rsa ....... mykeylabel
但是 Powershell 的 ssh-keygen 与它的 UNIX 对应物不同,不能在这些格式之间转换,因为它有一个 open bug