Как использовать ключи SSH с Windows в Azure

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Эта статья предназначена для пользователей Windows, желающих создать и использовать ключи Secure Shell (SSH) для подключения к виртуальным машинам Linux в Azure. Вы также можете создать и сохранить ключи SSH на портале Azure, они будут использоваться при создании виртуальных машин на портале.

Чтобы использовать ключи SSH из клиента Linux или macOS, ознакомьтесь с краткими инструкциями. Более подробный обзор SSH см. в статье Подробная инструкция: создание ключей SSH и управление ими для проверки подлинности на виртуальной машине Linux в Azure.

Общие сведения о SSH и ключах

SSH — это протокол зашифрованного подключения, позволяющий безопасно входить в систему через незащищенные соединения. SSH — это протокол подключения по умолчанию для виртуальных машин Linux, размещенных в Azure. Хотя протокол SSH и обеспечивает зашифрованное подключение, при использовании паролей с SSH виртуальные машины все равно не защищены от атак методом подбора. Мы рекомендуем подключаться к виртуальной машине по SSH с помощью пары "открытый ключ — закрытый ключ", также известных как ключи SSH.

Пара из открытого и закрытого ключей аналогична запиранию двери. Замок общедоступен, любой человек с подходящим ключом может открыть дверь. Ключ является закрытым и предоставляется только доверенным людям, так как его можно использовать для открытия двери.

  • Открытый ключ размещается на виртуальной машине Linux при ее создании.

  • Закрытый ключ остается в локальной системе. Его нужно защищать Не делитесь этим.

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

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

Открытый ключ можно предоставить любому пользователю, но только вы (или ваша локальная инфраструктура безопасности) должны иметь доступ к вашему закрытому ключу.

Поддерживаемые форматы ключей SSH

В настоящее время Azure поддерживает следующие типы ключей:

  • Протокол SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) с минимальной длиной 2048 бит
  • ED25519 Ключи с фиксированной длиной 256 бит

Другие ключевые форматы, такие как Elliptic-curve Diffie-Hellman (ECDH) и алгоритм цифровой подписи эллиптических кривых (ECDSA) в настоящее время не поддерживаются.

SSH-клиенты

Последние версии Windows 10 содержат команды клиента OpenSSH для создания и использования ключей SSH и установления SSH-подключений из PowerShell или командной строки.

Можно также использовать Bash в Azure Cloud Shell для подключения к виртуальной машине. Cloud Shell можно использовать в веб-браузере, на портале Azure или в качестве терминала в Visual Studio Code с помощью расширения учетной записи Azure.

Вы также можете установить подсистему Windows для Linux, чтобы подключиться к виртуальной машине по протоколу SSH и использовать другие собственные средства Linux в оболочке Bash.

Создание пары ключей SSH

Для создания ключей SSH для повторного использования и управления ими проще всего использовать портал.

Вы также можете создать пары ключей с помощью Azure CLI и команды az sshkey create, как описано в статье Создание и хранение ключей SSH.

Чтобы создать пару ключей SSH на локальном компьютере с помощью ssh-keygen команды из PowerShell или командной строки, используйте следующую команду:

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

Введите имя файла или используйте имя по умолчанию, указанное в скобках (например, C:\Users\username/.ssh/id_rsa). Введите парольную фразу для файла или оставьте парольную фразу пустой, если вы не хотите использовать парольную фразу.

Создание виртуальной машины с помощью собственного ключа

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

В Azure CLI вы указываете путь и имя файла для открытого ключа с помощью az vm create и параметра --ssh-key-value.

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

В PowerShell используйте New-AzVM и добавьте ключ SSH в конфигурацию виртуальной машины с помощью `. Например, изучите Краткое руководство. Создание виртуальной машины Linux в Azure с помощью PowerShell.

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

Подключение к виртуальной машине

С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. Замените azureuser и 10.111.12.123 в приведенной команде, указав имя администратора, IP-адрес (или полное доменное имя) и путь к закрытому ключу:

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

Если вы никогда не подключились к этой виртуальной машине, прежде чем будет предложено проверить отпечатки узлов. Это заманчиво принять отпечаток, представленный, однако, это предоставляет вам возможного человека в середине атаки. Всегда проверяйте допустимость отпечатка узлов. Вам нужно сделать это только при первом подключении из клиента. Чтобы получить отпечаток узла на портале, используйте команду run с помощью следующей команды: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'

Снимок экрана: использование функции

Чтобы выполнить команду с помощью CLI, используйте команду az vm run-command invoke.

Если при создании пары ключей вы настроили парольную фразу, введите ее при появлении запроса.

Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа.

Следующие шаги