Подтвердить что ты не робот

Как я могу получить ключ хоста ssh для новой виртуальной машины Azure Linux, созданной с помощью PowerShell?

Если я создам виртуальную машину Azure Linux с помощью PowerShell, как я могу получить ее новый ключ ssh-хоста, чтобы я мог установить ее в локальную ssh/putty? Предпочтительным решением является также код PowerShell.

4b9b3361

Ответ 1

Клавиши RSA, DSA, ECDSA и ED25519 генерируются при первой загрузке и доступны в журнале диагностики загрузки.

Генерация ключа Список ключевых слов

Если вы не поймаете его при первой загрузке, я не думаю, что он указан нигде в портале. Там только один возможный, безопасный вариант, о котором я могу думать, для восстановления отпечатка пальца для уже развернутой виртуальной машины.

  • Создайте новую виртуальную машину.
  • Прикрепите VHD виртуальной машины, для которой вам нужен отпечаток.
  • Проверьте подключение к новой виртуальной машине с помощью отпечатка пальца в диагностике загрузки.
  • Проверьте отпечаток пальца для сгенерированного файла /etc/ssh/ssh_host_rsa_key.pub на другом диске.

    ssh-keygen -lf /{path}/ssh_host_rsa_key.pub

Вам может потребоваться добавить переключатель -E md5, если вам нужен хэш-код MD5 с шестнадцатеричным кодированием.

PowerShell

Получить данные диагностики загрузки через PowerShell:

Get-AzureRmVMBootDiagnosticsData -ResourceGroupName ExampleGroup -Name TestLab -Linux

Соединение с Putty

Azure вычисляет отпечатки пальца хоста в виде кодированной в Base64 строки SHA-256 хэш открытого ключа. Когда вы пытаетесь подключиться с помощью Putty, он отображает отпечаток в виде шестнадцатеричной кодированной строки MD5 хэш открытого ключа.

К счастью, Azure также перечисляет полный открытый ключ в журнале диагностики загрузки, где он говорит BEGIN SSH HOST KEY KEYS во втором image. При этом мы можем вручную вычислить отпечаток пальца, как это описано Putty.

С#

static string ComputeMD5FingerprintFromBase64(string encoded)
{
  // Convert Base64 string to byte array.
  byte[] pub = Convert.FromBase64String(encoded);

  // Compute MD5 hash.
  HashAlgorithm md5 = MD5.Create();
  byte[] hash = md5.ComputeHash(pub);

  return BitConverter.ToString(hash).Replace('-', ':');
}

Ответ 2

Я отправил этот вопрос в поддержку Azure. Они отправили мне эту ссылку на информацию об сканере отпечатков пальцев. Когда я объяснил, что такое ssh, и пояснил, что они сказали

... эта проблема выпадает из границы поддержки от поддержки платформы Azure...

Кто-нибудь другой, кроме Лазури, мог бы дать мне это? Они являются единственными с известным защищенным соединением с новой виртуальной машиной.

Ответ 3

Возможно, это именно то, что вы ищете. Я попробую его с вами в моем аккаунте прямо сейчас.

В принципе, похоже, что вам нужно прикрепить .pem при создании. введите описание изображения здесь

Что должно дать отпечаток вашего сертификата.
введите описание изображения здесь

Ответ 4

Пример виртуальной машины Windows

Select-AzureSubscription mysub $service = 'yourservicename1' $location = 'West US' New-AzureService -ServiceName $service -Location $location Add-AzureCertificate -CertToDeploy 'D:User-DatadevelopmentAzure Samplesmlwdevcert.cer' -ServiceName $service $cert1 = New-AzureCertificateSetting -Thumbprint D7BECD4D63EBAF86023BB4F1A5FBF5C2C924902A -StoreName 'My' New-AzureVMConfig -ImageName 'MSFT__Windows-Server-2012-Datacenter-201208.01-en.us-30GB.vhd' -InstanceSize 'Small' -Name 'win2012cert' | Add-AzureProvisioningConfig -Windows -Password '[email protected]' -Certificates $cert1 | New-AzureVM -ServiceName $service

Пример Linux VM

Select-AzureSubscription mysub $service = 'yourservicename1' $location = 'West US' New-AzureService -ServiceName $service -Location $location Add-AzureCertificate -CertToDeploy 'D:User-DatadevelopmentAzure Samplesmlwdevcert.cer' -ServiceName $service $sshkey = New-AzureSSHKey -PublicKey -Fingerprint D7BECD4D63EBAF86023BB4F1A5FBF5C2C924902A -Path '/home/admin/.ssh/authorized_keys' New-AzureVMConfig -ImageName 'CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd' -InstanceSize 'Small' -Name 'linuxwithcert' | Add-AzureProvisioningConfig -Linux -LinuxUser 'mwasham' -Password '[email protected]' -SSHPublicKeys $sshKey | New-AzureVM -ServiceName $service

Примечание. Параметры -Certificates и -SSHPublicKeys являются массивами, поэтому они могут принимать несколько сертификатов. -SSHPublicKeys $sshKey1, $sshKey2

Для Linux существует также параметр -SSHKeyPairs для передачи пары ключей вместо простого открытого ключа. -Сертификаты могут обрабатывать оба типа в Windows.