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

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

Примечание.

Эта статья оказалась полезной? Ваш вклад важен для нас. Используйте кнопку Отзыв на этой странице, чтобы сообщить нам, насколько хорошо эта статья работает для вас или как мы можем ее улучшить.

Быстрые действия по устранению неполадок

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

  1. Сброс конфигурации SSH.
  2. Сброс учетных данных пользователя.
  3. Убедитесь, что правила группы безопасности сети разрешают SSH-трафик и назначение ролей.
    • Убедитесь, что существует правило группы безопасности сети , разрешающее трафик SSH (по умолчанию TCP-порт 22).
    • Вы не можете использовать перенаправление или сопоставление портов без использования Azure Load Balancer.
    • Если вы используете Microsoft Entra ID для управления именами входа по протоколу SSH, пользователю должна быть назначена роль входа администратора виртуальной машины или имя входа пользователя виртуальной машины в группе ресурсов, содержащей виртуальную машину и связанные с ней ресурсы. В противном случае будет получена ошибка "Отказано в разрешении (открытый ключ)". Дополнительные сведения см. в статье Настройка назначений ролей для виртуальной машины, которая использует Microsoft Entra входа.
  4. Проверьте работоспособность ресурсов виртуальной машины.
    • Убедитесь, что виртуальная машина сообщает о работоспособности.
    • Если загрузочный диагностика включен, убедитесь, что виртуальная машина не сообщает об ошибках загрузки в журналах.
  5. Перезапустите виртуальную машину.
  6. Повторно разверните виртуальную машину.

Ознакомьтесь с более подробными инструкциями по устранению неполадок и пояснениями.

Доступные методы для устранения неполадок с подключением по протоколу SSH

Вы можете сбросить учетные данные, конфигурацию SSH или устранить неполадки с состоянием службы SSH с помощью одного из следующих методов:

  • портал Azure — отлично подходит, если вам нужно быстро сбросить конфигурацию SSH или ключ SSH, а средства Azure не установлены.
  • Последовательная консоль виртуальной машины Azure — последовательная консоль виртуальной машины будет работать независимо от конфигурации SSH и предоставляет интерактивную консоль для виртуальной машины. На самом деле, ситуации "не удается SSH" — это именно то, что последовательная консоль была разработана для решения. Дополнительные сведения см. ниже.
  • Использовать команду запуска с помощью портал Azure. Вы можете выполнять базовые команды с помощью функции выполнить команду с помощью портал Azure. Выходные данные будут возвращены на портал.
  • Azure CLI — если вы уже используете командную строку, быстро сбросьте конфигурацию или учетные данные SSH. Если вы работаете с классической виртуальной машиной, можно использовать классический интерфейс командной строки Azure.
  • Расширение Azure VMAccessForLinux — создание и повторное использование файлов определения JSON для сброса конфигурации SSH или учетных данных пользователя.

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

Использование портал Azure

Портал Azure позволяет быстро сбросить конфигурацию SSH или учетные данные пользователя без установки каких-либо средств на локальном компьютере.

Для начала выберите виртуальную машину в портал Azure. Прокрутите вниз до раздела Справка и выберите Сбросить пароль , как показано в следующем примере:

Снимок экрана: сброс конфигурации S S H или учетных данных в портал Azure.

Сброс конфигурации SSH

Чтобы сбросить конфигурацию SSH, выберите Reset configuration only в разделе Режим , как показано на предыдущем снимке экрана, а затем выберите Обновить. После завершения этого действия повторите попытку доступа к виртуальной машине.

Сброс учетных данных SSH для пользователя

Чтобы сбросить учетные данные существующего пользователя, выберите Reset SSH public key или Reset password в разделе Режим , как показано на предыдущем снимке экрана. Укажите имя пользователя и ключ SSH или новый пароль, а затем нажмите кнопку Обновить.

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

Проверка правил безопасности

Используйте проверку IP-потока , чтобы убедиться, что правило в группе безопасности сети блокирует трафик на виртуальную машину или из нее. Вы также можете просмотреть действующие правила группы безопасности, чтобы убедиться, что входящее правило NSG "Разрешить" существует и имеет приоритет для SSH-порта (по умолчанию 22). Дополнительные сведения см. в статье Использование эффективных правил безопасности для устранения неполадок потока трафика виртуальной машины.

Проверка маршрутизации

Используйте возможность следующего прыжка Наблюдатель за сетями, чтобы убедиться, что маршрут не препятствует маршрутизации трафика на виртуальную машину или из нее. Вы также можете просмотреть действующие маршруты, чтобы просмотреть все действующие маршруты для сетевого интерфейса. Дополнительные сведения см. в статье Использование эффективных маршрутов для устранения неполадок потока трафика виртуальной машины.

Использование последовательной консоли виртуальной машины Azure

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

Убедитесь, что служба SSH запущена

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

sudo systemctl status sshd.service

См. следующий пример выходных данных. Проверьте состояние службы из Active строки в выходных данных. В выходных данных также отображаются прослушиваемые порты и IP-адреса.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Если эта команда недоступна или возвращает непредвиденные результаты, используйте другие доступные команды. Вы можете использовать ss команду как root или с помощью sudo команды , чтобы проверить, запущена ли служба SSH на виртуальной машине.

В следующем примере показано, как выполнить команду через sssudo:

sudo ss --listen --tcp --process --numeric | grep sshd

Примечание.

Мы рекомендуем использовать команду, ss так как netstat она не рекомендуется использовать и не всегда доступна в современных дистрибутивах.

Если есть какие-либо выходные данные, SSH работает. См. следующий пример выходных данных:

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn — сокращенная форма --listen --tcp --process –numeric аргументов. В выходных данных показано, что процесс 829 SSHD прослушивает адреса IPv4 и IPv6.

Проверьте, на каком порту выполняется SSH

Приведенные выше выходные данные команды показывают, что процесс SSHD прослушивает порт 22. Если процесс SSHD настроен для запуска на другом порту, порт будет отображаться в выходных данных. Чтобы проверка, было ли внесено изменение в стандартном файле конфигурации, просмотрите файл конфигурации по умолчанию /etc/ssh/sshd_config с помощью одной из следующих команд:

grep -i port /etc/ssh/sshd_config

или

grep -i listen /etc/ssh/sshd_config

Выходные данные будут выглядеть следующим образом:

Port 22

Любая строка, которая начинается с # в выходных данных, является комментарием и может быть безопасно проигнорирована. Если ничего не возвращается или строки являются комментариями, используется конфигурация по умолчанию. Конфигурация по умолчанию — прослушивание всех IP-адресов в системе через порт 22.

Использование команды run через портал Azure

Если вы не можете выполнять команды через последовательную консоль, например, когда для проверки подлинности используются только ключи SSH, функция запуска команды может использоваться для выдачи команд и просмотра выходных данных. Все команды, которые ранее выполнялись из последовательной консоли, можно выполнять в неинтерактивном режиме в разделе Выполнить команду портал Azure. Выходные данные будут возвращены в портал Azure. Нет необходимости использовать sudo для выполнения команд в контексте run command.

Использование Azure CLI

Если вы еще этого не сделали, установите последнюю версию Azure CLI и войдите в учетную запись Azure с помощью команды az login.

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

Сброс конфигурации SSH

Сначала можно попробовать сбросить конфигурацию SSH до значений по умолчанию и перезагрузить SSH-сервер на виртуальной машине. Это не изменяет имя учетной записи пользователя, пароль или ключи SSH. В следующем примере используется az vm user reset-ssh для сброса конфигурации SSH на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

az vm user reset-ssh --resource-group myResourceGroup --name myVM

Сброс учетных данных SSH для пользователя

В следующем примере используется az vm user update для сброса учетных данных для myUsername до значения, указанного в myPassword, на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

При использовании проверки подлинности по ключу SSH можно сбросить ключ SSH для данного пользователя. В следующем примере используется az vm access set-linux-user для обновления ключа SSH, хранящегося в ~/.ssh/id_rsa.pub для пользователя с именем myUsername, на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

Использование расширения VMAccess

Расширение доступа к виртуальной машине для Linux считывает файл JSON, определяющий действия для выполнения. Эти действия включают сброс SSHD, сброс ключа SSH или добавление пользователя. Вы по-прежнему используете Azure CLI для вызова расширения VMAccess, но при необходимости можно повторно использовать json-файлы на нескольких виртуальных машинах. Такой подход позволяет создать репозиторий json-файлов, которые затем можно вызвать для заданных сценариев.

Сброс SSHD

Создайте файл settings.json со следующим содержимым:

{
    "reset_ssh":True
}

С помощью Azure CLI можно вызвать VMAccessForLinux расширение, чтобы сбросить подключение SSHD, указав json-файл. В следующем примере используется az vm extension set для сброса SSHD на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Сброс учетных данных SSH для пользователя

Если SSHD работает правильно, можно сбросить учетные данные для пользователя дарителя. Чтобы сбросить пароль для пользователя, создайте файл с именем settings.json. В следующем примере учетные данные для myUsername сбрасываются до значения, указанного в myPassword. Введите в файл следующие строки settings.json , используя собственные значения:

{
    "username":"myUsername", "password":"myPassword"
}

Или, чтобы сбросить ключ SSH для пользователя, сначала создайте файл с именем settings.json. В следующем примере учетные данные для myUsername сбрасываются до значения, указанного в myPassword, на виртуальной машине с именем myVM в myResourceGroup. Введите в файл следующие строки settings.json , используя собственные значения:

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

После создания json-файла используйте Azure CLI, чтобы вызвать VMAccessForLinux расширение для сброса учетных данных пользователя SSH, указав json-файл. В следующем примере учетные данные сбрасываются на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Использование классического интерфейса командной строки Azure

Если вы еще этого не сделали, установите классический интерфейс командной строки Azure и подключитесь к подписке Azure. Убедитесь, что вы используете режим Resource Manager следующим образом:

azure config mode arm

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

Сброс конфигурации SSH

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

В следующем примере выполняется сброс SSHD на виртуальной машине с именем myVM в группе ресурсов с именем myResourceGroup. Используйте собственные имена виртуальных машин и групп ресурсов следующим образом:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Сброс учетных данных SSH для пользователя

Если SSHD работает правильно, можно сбросить пароль для пользователя дарителя. В следующем примере учетные данные для myUsername сбрасываются до значения, указанного в myPassword, на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

При использовании проверки подлинности по ключу SSH можно сбросить ключ SSH для данного пользователя. В следующем примере обновляется ключ SSH, хранящийся в ~/.ssh/id_rsa.pub для пользователя с именем myUsername, на виртуальной машине с именем myVM в myResourceGroup. Используйте собственные значения следующим образом:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

Перезапуск виртуальной машины

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

Портал Azure

Чтобы перезапустить виртуальную машину с помощью портал Azure, выберите виртуальную машину, а затем выберите Перезапустить, как показано в следующем примере:

Снимок экрана: перезапуск виртуальной машины в портал Azure.

Azure CLI

В следующем примере используется az vm restart для перезапуска виртуальной машины myVM в группе ресурсов с именем myResourceGroup. Используйте собственные значения следующим образом:

az vm restart --resource-group myResourceGroup --name myVM

Классический интерфейс командной строки Azure

Важно!

Классические виртуальные машины будут прекращены 1 сентября 2023 г.

Если вы используете ресурсы IaaS из ASM, завершите миграцию до 1 сентября 2023 г. Мы рекомендуем сделать этот переход быстрее, чтобы воспользоваться преимуществами многочисленных улучшений функций в Azure Resource Manager.

Дополнительные сведения см. в статье Перенос ресурсов IaaS в Azure Resource Manager до 1 сентября 2023 г.

В следующем примере выполняется перезапуск виртуальной машины myVM в группе ресурсов с именем myResourceGroup. Используйте собственные значения следующим образом:

azure vm restart --resource-group myResourceGroup --name myVM

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

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

Примечание.

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

Портал Azure

Чтобы повторно развернуть виртуальную машину с помощью портал Azure, выберите виртуальную машину и прокрутите вниз до раздела Справка. Выберите Повторное развертывание , как показано в следующем примере:

Снимок экрана: повторное развертывание виртуальной машины в портал Azure.

Azure CLI

В следующем примере используется az vm deployment для повторного развертывания виртуальной машины myVM в группе ресурсов с именем myResourceGroup. Используйте собственные значения следующим образом:

az vm redeploy --resource-group myResourceGroup --name myVM

Классический интерфейс командной строки Azure

В следующем примере выполняется повторное развертывание виртуальной машины myVM в группе ресурсов с именем myResourceGroup. Используйте собственные значения следующим образом:

azure vm redeploy --resource-group myResourceGroup --name myVM

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

Важно!

Классические виртуальные машины будут прекращены 1 сентября 2023 г.

Если вы используете ресурсы IaaS из ASM, завершите миграцию до 1 сентября 2023 г. Мы рекомендуем сделать этот переход быстрее, чтобы воспользоваться преимуществами многочисленных улучшений функций в Azure Resource Manager.

Дополнительные сведения см. в статье Перенос ресурсов IaaS в Azure Resource Manager до 1 сентября 2023 г.

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

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

  • Перезапустите виртуальную машину. На портал Azure выберите виртуальную машину и нажмите кнопку Перезапустить.

  • Повторно разверните виртуальную машину на новом узле Azure. Сведения о повторном развертывании виртуальной машины см. в статье Повторное развертывание виртуальной машины на новом узле Azure.

    После завершения этой операции данные временных дисков будут потеряны, а динамические IP-адреса, связанные с виртуальной машиной, будут обновлены.

  • Следуйте инструкциям в разделе Сброс пароля или SSH для виртуальных машин под управлением Linux , чтобы:

    • Сбросьте пароль или ключ SSH.
    • Создайте учетную запись пользователя sudo .
    • Сброс конфигурации SSH.
  • Проверьте работоспособность ресурсов виртуальной машины на наличие проблем с платформой.
    Выберите виртуальную машину и прокрутите вниз Параметры>Проверка работоспособности.

Дополнительные ресурсы

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.