Краткая инструкция: создание и использование пары из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
С помощью пары ключей Secure Shell (SSH) в Azure можно создавать виртуальные машины, использующие ключи SSH для проверки подлинности. В этой статье показано, как быстро создать и использовать пару файлов открытого и закрытого ключей SSH для виртуальных машин Linux. Эти шаги можно выполнить с помощью Azure Cloud Shell, узла macOS или Linux.
Сведения про устранение неполадок, связанных с SSH, см. в разделе об устранении неполадок подключения SSH к виртуальной машине Linux в Azure, которая стала неработоспособной, выдает ошибки или отказала в подключении.
Примечание.
В настройках виртуальных машин, созданных с помощью ключей SSH, пароли отключены по умолчанию. Это сильно усложняет выполнение атак методом подбора.
Дополнительные сведения и примеры доступны в разделе Подробное руководство по созданию пары ключей SSH и дополнительных сертификатов для виртуальной машины Linux в Azure.
Дополнительные способы создания и использования ключей SSH на компьютере Windows описываются в разделе Использование ключей SSH с Windows в Azure.
Поддерживаемые форматы ключей SSH
В настоящее время Azure поддерживает следующие типы ключей:
- Протокол SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) с минимальной длиной 2048 бит
- ED25519 Ключи с фиксированной длиной 256 бит
Другие ключевые форматы, такие как Elliptic-curve Diffie-Hellman (ECDH) и алгоритм цифровой подписи эллиптических кривых (ECDSA) в настоящее время не поддерживаются.
Создание пары ключей SSH
Чтобы создать файлы открытого и закрытого ключей SSH, используйте команду ssh-keygen
. По умолчанию эти файлы хранятся в каталоге ~/.ssh. Можно указать другое расположение и необязательный пароль (парольную фразу) для доступа к файлу закрытого ключа. Если в выбранном расположении существует пара ключей SSH с теми же именами, они будут перезаписаны.
Следующая команда создает пару 4096-разрядных ключей SSH, использующих шифрование RSA:
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa.pem
Следующая команда создает пару ключей SSH с помощью шифрования ED25519 с фиксированной длиной 256 бит:
ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem
Примечание.
Вы также можете создать пары ключей с помощью Azure CLI и команды az sshkey create, как описано в статье Создание и хранение ключей SSH.
При использовании Azure CLI 2.0 для создания виртуальной машины можно дополнительно создать файлы открытого и закрытого ключей SSH, выполнив команду az vm create с параметром --generate-ssh-keys
. Файлы ключей хранятся в каталоге ~/.ssh, если не указано иное с помощью параметра --ssh-dest-key-path
. Если пара ключей SSH уже существует и --generate-ssh-keys
используется параметр, новая пара ключей не будет создана, а вместо существующей пары ключей будет использоваться. В следующей команде замените VMname, RGname и UbuntuLTS собственными значениями:
az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys
Примечание.
az sshkey create command deafults to RSA encryption and be use to generate ED25519 key pairs, но вы можете создать пару ключей ED25519 с помощью SSH-keygen, как описано выше, и использовать этот открытый ключ для создания виртуальной машины.
Предоставление открытого ключа SSH при развертывании виртуальной машины
Чтобы создать виртуальную машину Linux, которая использует ключи SSH для аутентификации, укажите свой открытый ключ SSH при создании виртуальной машины с помощью портала Azure, Azure CLI, шаблонов Resource Manager или других методов.
- Создание виртуальной машины Linux с помощью портала Azure
- Создание виртуальной машины Linux с помощью Azure CLI
- Создание виртуальной машины Linux с помощью шаблона Azure
Если вам не знаком формат открытого ключа SSH, можно отобразить открытый ключ командой cat
, при необходимости заменив ~/.ssh/id_rsa.pub
путем и именем файла собственного открытого ключа.
Пара ключей RSA
cat ~/.ssh/id_rsa.pub
Обычное значение открытого ключа RSA выглядит следующим образом:
ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname
пара ключей ED25519
cat ~/.ssh/id_ed25519.pub
Обычное значение открытого ключа ED25519 выглядит следующим образом:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname
Если вы копируете содержимое файла открытого ключа и вставляете его на портале Azure или в шаблоне Resource Manager, в этом содержимом не должно быть завершающего пробела. Чтобы скопировать открытый ключ в macOS, можно передать файл открытого ключа в pbcopy
. Аналогичным образом в Linux можно передать файл открытого ключа в такие программы как xclip
.
Открытый ключ, который вы размещаете на виртуальной машине Linux в Azure, по умолчанию хранится ~/.ssh/
в каталоге, если вы не указали другое расположение при создании пары ключей. При использовании Azure CLI 2.0 для создания виртуальной машины с использованием существующего открытого ключа укажите значение и (необязательно) расположение этого ключа, выполнив команду az vm create с параметром --ssh-key-values
. В следующей команде замените myVM, myResourceGroup, UbuntuLTS, azureuser и mysshkey.pub собственными значениями:
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--ssh-key-values mysshkey.pub
Если вы хотите использовать несколько ключей SSH с виртуальной машиной, их можно ввести в список, разделенный запятыми, как показано ниже --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub
.
SSH-подключение к виртуальной машине
С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. Замените azureuser и myvm.westus.cloudapp.azure.com в приведенной команде, указав имя пользователя администратора и полное доменное имя (или IP-адрес).
ssh azureuser@myvm.westus.cloudapp.azure.com
Если вы подключаетесь к этой виртуальной машине в первый раз, вам будет предложено проверить отпечаток узла. Это заманчиво принять отпечаток, представленный, но этот подход предоставляет вам возможное нападение на человека в середине. Всегда проверяйте допустимость отпечатка узла. Вам нужно сделать это только при первом подключении из клиента. Чтобы получить отпечаток узла с помощью портала, используйте функцию "Выполнение команд", чтобы выполнить команду ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
.
Чтобы выполнить команду с помощью интерфейса командной строки, используйте az vm run-command invoke
.
Если при создании пары ключей вы указали парольную фразу, введите ее при появлении запроса во время входа в систему. Виртуальная машина добавляется в файл ~/.ssh/known_hosts. Пока открытый ключ на виртуальной машине Azure не будет изменен или не будет удалено имя сервера из файла ~/.ssh/known_hosts, запрос на подключение не будет отображен повторно.
Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа.
Следующие шаги
Дополнительные сведения о работе с парами ключей SSH см. в разделе Подробные инструкции: создание ключей SSH для аутентификации на виртуальной машине Linux в Azure и управление этими ключами.
При возникновении сложностей с SSH-подключениями к виртуальным машинам Azure обратитесь к разделу Устранение неполадок с SSH-подключением к виртуальной машине Azure Linux: сбой, ошибка или отклонение.