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


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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование последовательной консоли виртуальной машины 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.

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

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

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 аргументов. В выходных данных показано, что SSHD-процесс 829 прослушивается как на IPv4, так и на IPv6-адресах.

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

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

grep -i port /etc/ssh/sshd_config

or

grep -i listen /etc/ssh/sshd_config

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

Port 22

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

Использование команды выполнения с помощью портал Azure

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

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

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

Если вы создали и отправили пользовательский образ диска Linux, убедитесь, что установлен агент Linux для Microsoft Azure версии 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 пользователя

В следующем примере используется команда aaz 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/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

Сбросьте конфигурацию SSH.

Может быть неправильно настроена сама конфигурация SSHD, или в службе произошла ошибка. Чтобы убедиться, что конфигурация SSH действительна, можно выполнить сброс SSHD. При устранении неполадок сначала нужно сбросить 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, что поможет устранить любые базовые сетевые проблемы. Сведения о повторном развертывании виртуальной машины на новом узле Azure см.

Примечание.

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

Портал Azure

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

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

Azure CLI

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

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

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

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

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