Поделиться через


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

Эта статья помогает подключиться через Бастион Azure к виртуальной машине в виртуальной сети с помощью собственного клиента на локальном компьютере Linux. Функция собственного клиента позволяет подключаться к целевым виртуальным машинам через Бастион с помощью Azure CLI и развертывать параметры входа, чтобы включить локальную пару ключей SSH и идентификатор Microsoft Entra. Дополнительные сведения и действия по настройке Бастиона для собственных подключений клиентов см. в разделе "Настройка бастиона" для собственных подключений клиентов. Для подключений через собственный клиент требуется SKU "Bastion Standard" или выше.

На схеме показано подключение через собственный клиент.

После настройки Бастиона для поддержки собственного клиента можно подключиться к виртуальной машине с помощью собственного клиента Linux. Метод, используемый для подключения, зависит от клиента, от который вы подключаетесь, и от виртуальной машины, к которой вы подключаетесь. В следующем списке показаны некоторые доступные способы подключения из собственного клиента Linux. Сведения о подключении к виртуальным машинам см. в полном списке с доступными сочетаниями подключений и компонентов клиента.

  • Подключитесь к виртуальной машине Linux с помощью az network bastion ssh.
  • Подключитесь к виртуальной машине Windows с помощью az network bastion tunnel.
  • Подключитесь к любой виртуальной машине с помощью команды az network bastion tunnel.
  • Передача файлов на целевую виртуальную машину по протоколу SSH с помощью az network bastion tunnel.

Prerequisites

Прежде чем начать, убедитесь, что у вас есть следующие предварительные требования:

Проверка ролей и портов

Убедитесь, что для подключения к виртуальной машине настроены следующие роли и порты.

Обязательные роли

  • Роль на чтение на виртуальной машине.

  • Роль чтеца на сетевом адаптере с частным IP-адресом виртуальной машины.

  • Роль пользователя с правами чтения в ресурсе Azure Bastion.

  • Роль входа администратора виртуальной машины или имени входа пользователя виртуальной машины, если вы используете метод входа в Microsoft Entra. Это необходимо сделать только в том случае, если вы включаете вход в Microsoft Entra с помощью процессов, описанных в одной из следующих статей:

Ports

Чтобы подключиться к виртуальной машине Linux с помощью собственной поддержки клиентов, необходимо открыть следующие порты на виртуальной машине Linux:

  • Входящий порт: SSH (22) или
  • Входящий порт: настраиваемое значение (при подключении к виртуальной машине через Бастион Azure) необходимо указать этот пользовательский порт.

Чтобы подключиться к виртуальной машине Windows с помощью собственной поддержки клиентов, необходимо открыть следующие порты на виртуальной машине Windows:

  • Входящий порт: RDP (3389) или
  • Входящий порт: настраиваемое значение (при подключении к виртуальной машине через Бастион Azure) необходимо указать этот пользовательский порт.

Сведения о том, как лучше настроить группы безопасности сети с помощью Бастиона Azure, см. в статье "Работа с доступом NSG и Бастионом Azure".

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

Действия, описанные в следующих разделах, помогают подключиться к виртуальной машине Linux из собственного клиента Linux с помощью команды az network bastion . Это расширение можно установить, выполнив команду az extension add --name bastion.

При подключении с помощью этой команды передача файлов не поддерживается. Если вы хотите передать файлы, подключитесь с помощью команды az network туннель бастиона.

Эта команда позволяет выполнить следующие действия:

  • Подключитесь к виртуальной машине Linux с помощью SSH.
  • Проверка подлинности с помощью идентификатора Microsoft Entra
  • Подключитесь к параллельным сеансам виртуальной машины в виртуальной сети.

Чтобы войти, используйте один из следующих примеров. После входа на целевую виртуальную машину родной клиент на вашем компьютере откроется вместе с сеансом виртуальной машины.

Пара ключей SSH

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

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

Проверка подлинности Microsoft Entra

Если вы входите на виртуальную машину, поддерживающую вход через Microsoft Entra, используйте следующий пример. Дополнительные сведения см. в статье о виртуальных машинах Linux Azure и идентификаторе Microsoft Entra.

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "AAD"

Username/password

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

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"

SSH-подключение к IP-адресу виртуальной машины Linux

Вы можете подключиться к частному IP-адресу виртуальной машины вместо идентификатора ресурса. Проверка подлинности идентификатора Microsoft Entra и пользовательские порты и протоколы не поддерживаются при использовании этого типа подключения. Дополнительные сведения о подключениях на основе IP-адресов см. в разделе "Подключение к виртуальной машине — IP-адрес".

Используя команду az network bastion, замените --target-resource-id на --target-ip-address и указанный IP-адрес, чтобы подключиться к вашей виртуальной машине. В следующем примере используется ключ --ssh-key для метода проверки подлинности.

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

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

Команда az network bastion tunnel — это еще один способ подключения к виртуальным машинам. При использовании этой команды можно выполнить следующее:

  • Подключитесь из нативных клиентов на локальных компьютерах не на базе Windows. (Например, компьютер Linux.)
  • Подключитесь к виртуальной машине с помощью SSH или RDP. (Туннель бастиона не переправляет веб-сервера или хосты.)
  • Используйте собственный клиент по своему усмотрению.
  • Передача файлов на целевую виртуальную машину с локального компьютера.

Limitations:

  • Вход с помощью закрытого ключа SSH, хранящегося в Azure Key Vault, не поддерживается с этой функцией. Перед входом на виртуальную машину Linux с помощью пары ключей SSH загрузите закрытый ключ в файл на локальном компьютере.
  • Эта функция не поддерживается в Cloud Shell.

Steps:

  1. Войдите в учетную запись Azure с помощью az login. Если у вас несколько подписок, их можно просмотреть с помощью az account list и выбрать подписку, содержащую ресурс Бастиона, с помощью az account set --subscription "<subscription ID>".

  2. Откройте туннель для целевой виртуальной машины. Без привилегий root используйте локальный порт 1024 или выше, так как порты ниже являются привилегированными и доступны только root.

    az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
    
  3. Подключитесь к целевой виртуальной машине с помощью SSH или RDP, собственного клиента и порта локального компьютера, указанного на предыдущем шаге.

    Например, можно использовать следующую команду, если на локальном компьютере установлен клиент OpenSSH:

    ssh <username>@127.0.0.1 -p <LocalMachinePort>
    

Туннель к IP-адресу виртуальной машины

Вы также можете подключиться к частному IP-адресу виртуальной машины вместо идентификатора ресурса. Проверка подлинности идентификатора Microsoft Entra и пользовательские порты и протоколы не поддерживаются при использовании этого типа подключения. Дополнительные сведения о подключениях на основе IP-адресов см. в разделе "Подключение к виртуальной машине — IP-адрес".

Используя команду az network bastion tunnel, замените --target-resource-id на --target-ip-address и указанный IP-адрес, чтобы подключиться к вашей виртуальной машине.

az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"

Туннель с несколькими подключениями

  1. Добавьте следующую команду в конфигурацию $HOME.ssh\.

    Host tunneltunnel
      HostName 127.0.0.1
      Port 2222
      User mylogin
      StrictHostKeyChecking=No
      UserKnownHostsFile=\\.\NUL
    
  2. Добавьте новое подключение туннеля к уже установленному подключению.

    az network bastion tunnel --name mybastion --resource-group myrg --target-resource-id /subscriptions/<mysubscription>/resourceGroups/myrg/providers/Microsoft.Compute/virtualMachines/myvm --resource-port 22 --port 22
    
  3. Создайте туннель ssh в туннеле бастиона.

    ssh -L 2222:127.0.0.1:22 [email protected]
    
  4. Используйте VS Code для подключения к туннелю.

Дальнейшие шаги

Передача файлов