Устранение неполадок SSH-подключений к виртуальной машине Linux Azure, которая завершается сбоем, выходит из строя или отказано
Эта статья поможет вам найти и устранить проблемы, возникающие из-за ошибок Secure Shell (SSH), сбоев подключения SSH или отказа SSH при попытке подключиться к виртуальной машине Linux. Вы можете использовать портал Azure, Azure CLI или расширение доступа к виртуальной машине для Linux для устранения неполадок с подключением.
Примечание.
Эта статья оказалась полезной? Ваш вклад важен для нас. Используйте кнопку Отзыв на этой странице, чтобы сообщить нам, насколько хорошо эта статья работает для вас или как мы можем ее улучшить.
Быстрые действия по устранению неполадок
После каждого шага устранения неполадок попробуйте повторно подключиться к виртуальной машине.
- Сброс конфигурации SSH.
- Сброс учетных данных пользователя.
- Убедитесь, что правила группы безопасности сети разрешают SSH-трафик и назначение ролей.
- Убедитесь, что существует правило группы безопасности сети , разрешающее трафик SSH (по умолчанию TCP-порт 22).
- Вы не можете использовать перенаправление или сопоставление портов без использования Azure Load Balancer.
- Если вы используете Microsoft Entra ID для управления именами входа по протоколу SSH, пользователю должна быть назначена роль входа администратора виртуальной машины или имя входа пользователя виртуальной машины в группе ресурсов, содержащей виртуальную машину и связанные с ней ресурсы. В противном случае будет получена ошибка "Отказано в разрешении (открытый ключ)". Дополнительные сведения см. в статье Настройка назначений ролей для виртуальной машины, которая использует Microsoft Entra входа.
- Проверьте работоспособность ресурсов виртуальной машины.
- Убедитесь, что виртуальная машина сообщает о работоспособности.
- Если загрузочный диагностика включен, убедитесь, что виртуальная машина не сообщает об ошибках загрузки в журналах.
- Перезапустите виртуальную машину.
- Повторно разверните виртуальную машину.
Ознакомьтесь с более подробными инструкциями по устранению неполадок и пояснениями.
Доступные методы для устранения неполадок с подключением по протоколу SSH
Вы можете сбросить учетные данные, конфигурацию SSH или устранить неполадки с состоянием службы SSH с помощью одного из следующих методов:
- портал Azure — отлично подходит, если вам нужно быстро сбросить конфигурацию SSH или ключ SSH, а средства Azure не установлены.
- Последовательная консоль виртуальной машины Azure — последовательная консоль виртуальной машины будет работать независимо от конфигурации SSH и предоставляет интерактивную консоль для виртуальной машины. На самом деле, ситуации "не удается SSH" — это именно то, что последовательная консоль была разработана для решения. Дополнительные сведения см. ниже.
- Использовать команду запуска с помощью портал Azure. Вы можете выполнять базовые команды с помощью функции выполнить команду с помощью портал Azure. Выходные данные будут возвращены на портал.
- Azure CLI — если вы уже используете командную строку, быстро сбросьте конфигурацию или учетные данные SSH. Если вы работаете с классической виртуальной машиной, можно использовать классический интерфейс командной строки Azure.
- Расширение Azure VMAccessForLinux — создание и повторное использование файлов определения JSON для сброса конфигурации SSH или учетных данных пользователя.
После каждого шага устранения неполадок попробуйте подключиться к виртуальной машине еще раз. Если подключение по-прежнему не удается, попробуйте выполнить следующий шаг.
Использование портал Azure
Портал Azure позволяет быстро сбросить конфигурацию SSH или учетные данные пользователя без установки каких-либо средств на локальном компьютере.
Для начала выберите виртуальную машину в портал 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 на виртуальной машине.
В следующем примере показано, как выполнить команду через 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
аргументов. В выходных данных показано, что процесс 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 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 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.
Проверьте работоспособность ресурсов виртуальной машины на наличие проблем с платформой.
Выберите виртуальную машину и прокрутите вниз Параметры>Проверка работоспособности.
Дополнительные ресурсы
- Если вы по-прежнему не можете подключиться к виртуальной машине по протоколу SSH после выполнения следующих действий, ознакомьтесь с более подробными инструкциями по устранению неполадок , чтобы ознакомиться с дополнительными шагами по устранению проблемы.
- Дополнительные сведения об устранении неполадок с доступом к приложениям см. в статье Устранение неполадок с доступом к приложению, работающему на виртуальной машине Azure.
- Дополнительные сведения об устранении неполадок с виртуальными машинами, созданными с помощью классической модели развертывания, см. в статье Сброс пароля или SSH для виртуальных машин под управлением Linux.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по