Устранение неполадок с SSH-подключением к виртуальной машине Azure Linux: сбой, ошибка или отклонение
Область применения: ✔️ виртуальные машины Linux
В этой статье вы узнаете, как найти и исправить проблемы, возникающие из-за ошибок Secure Shell (SSH), сбоев SSH-соединения или отказа SSH при попытке подключения к виртуальной машине Linux. Для устранения неполадок и решения проблем с подключением можно воспользоваться порталом Azure, Azure CLI или расширением для доступа к виртуальной машине для Linux.
Примечание.
Статья была полезной? Ваши входные данные важны для нас. Нажмите кнопку "Отзывы" на этой странице, чтобы сообщить нам, насколько хорошо эта статья работала для вас или как мы можем улучшить ее.
Действия по устранению неполадок
После выполнения каждого шага устранения неполадок попробуйте подключиться к виртуальной машине еще раз.
- Выполните сброс конфигурации SSH.
- Сбросьте учетные данные пользователя.
- Проверьте правила группы безопасности сети, разрешая трафик SSH и назначение ролей.
- Убедитесь, что правило для разрешения трафика SSH есть в группе безопасности сети (по умолчанию — TCP-порт 22).
- Нельзя использовать перенаправление и сопоставление портов, не используя Azure Load Balancer.
- Если вы используете идентификатор Microsoft Entra для управления именами входа SSH, пользователю необходимо назначить роль входа администратора виртуальной машины или имени входа пользователя виртуальной машины в группе ресурсов, содержащей виртуальную машину и связанные с ней ресурсы. В противном случае будет получено сообщение об ошибке "Отказано в разрешении (publickey)". Дополнительные сведения см. в разделе "Настройка назначений ролей" для виртуальной машины, использующего имя входа Microsoft Entra.
- Проверьте работоспособность ресурсов виртуальной машины.
- Убедитесь, что виртуальная машина работоспособна.
- Если включена диагностика загрузки, убедитесь, что виртуальная машина не сообщала об ошибках загрузки в журналах.
- Перезапустите виртуальную машину.
- Заново разверните виртуальную машину.
Читайте статью дальше, если вам нужны более подробные инструкции или пояснения об исправлении неполадок.
Доступные методы устранения неполадок подключения SSH
Вы можете сбросить учетные данные, конфигурацию SSH или устранить неполадки с состоянием службы SSH с помощью одного из следующих методов:
- Портал Azure отлично подходит, когда нужно быстро сбросить конфигурацию или ключ SSH, а у вас не установлены инструменты Azure.
- Последовательная консоль виртуальной машины Azure— последовательная консоль виртуальной машины будет работать независимо от конфигурации SSH и предоставит интерактивную консоль виртуальной машине. На самом деле ситуации "не удается SSH", в частности, то, что последовательная консоль была разработана для решения. Дополнительные сведения приведены ниже.
- Используйте команду run с помощью портал Azure. Вы можете выполнять основные команды с помощью функции команды выполнения с помощью портал Azure. Выходные данные будут возвращены на портал.
- Azure CLI. Если вы уже открыли командную строку, быстро сбросьте конфигурацию SSH или учетные данные.
- Расширение Azure VMAccessForLinux. Создайте и повторно используйте файлы определения JSON для сброса учетных данных пользователя или конфигурации SSH.
После выполнения каждого шага устранения неполадок попробуйте подключиться к виртуальной машине еще раз. Если все еще не удается подключиться, то попробуйте выполнить следующее действие.
Использование портала Azure
На портале 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 CLI
В следующем примере используется команда az vm restart, чтобы перезапустить виртуальную машину myVM
в группе ресурсов myResourceGroup
. Используйте свои значения следующим образом:
az vm restart --resource-group myResourceGroup --name myVM
Повторное развертывание виртуальной машины
Виртуальную машину можно повторно развернуть на другом узле в Azure, что поможет устранить любые базовые сетевые проблемы. Сведения о повторном развертывании виртуальной машины на новом узле Azure см.
Примечание.
Обратите внимание, что после этой операции будут потеряны данные на временном диске, а также изменятся динамические IP-адреса, связанные с виртуальной машиной.
Портал Azure
Чтобы повторно развернуть виртуальную машину с помощью портал Azure, выберите виртуальную машину и прокрутите вниз до раздела справки. Щелкните Повторно развернуть, как показано в следующем примере.
Azure CLI
В следующем примере используется команда az vm restart, чтобы повторно развернуть виртуальную машину myVM
в группе ресурсов myResourceGroup
. Используйте свои значения следующим образом:
az vm redeploy --resource-group myResourceGroup --name myVM
Дополнительные ресурсы
- Если вам по-прежнему не удается выполнить SSH-подключение к виртуальной машине, см. дополнительные действия по устранению неполадок, которые позволят просмотреть дополнительные шаги по устранению проблемы.
- Дополнительные сведения об устранении неполадок с доступом к приложению см. в статье Устранение неполадок доступа к приложению, выполняющемуся в виртуальной машине Azure.
- Дополнительные сведения об устранении неполадок на виртуальных машинах, созданных с помощью классической модели развертывания, см. в статье о сбросе пароля или ключа SSH в виртуальных машинах Linux.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.