Вопрос или проблема
Проблема в том, что когда я пытаюсь подключиться через ssh к ВМ, я получаю сообщение “Истекло время ожидания подключения”.
Я сделал почти всё так же, как здесь. Вот точный порядок того, что я сделал:
-
vagrant init ubuntu/focal64, а затем vagrant up. Всё это было сделано в PowerShell, и провайдер для vagrant – VirtualBox.
-
Я создал проброс порта изображение проброса порта.
-
Из WSL я ввел cat /etc/resolv.conf. Результат: изображение wsl.
-
А затем я пытаюсь ssh -p 3322 [email protected] и получаю истечение времени ожидания соединения.
Что я делаю не так? Я был бы очень признателен за любую помощь! Спасибо!
Ладно, ребята, я разобрался. Проблема была в том, что между WSL и Windows есть брандмауэр. Вот где я об этом узнал: https://superuser.com/questions/1449775/windows-wsl-2-cant-ping-host-machine.
Что ещё может быть полезно: https://superuser.com/questions/1714002/wsl2-connect-to-host-without-disabling-the-windows-firewall.
В итоге я добавил новое правило для входящего трафика в Windows для этого порта, и всё заработало.
Ответ или решение
Почему я не могу подключиться к виртуальной машине (VM) из VirtualBox с помощью WSL?
Проблема подключения к виртуальным машинам с использованием SSH часто возникает в средах, таких как WSL (Windows Subsystem for Linux), из-за нескольких нюансов конфигурации системы. Давайте разберемся в этом вопросе, основываясь на вашем описании проблемы.
Процесс настройки
Вы указали, что использовали следующие шаги:
-
Инициализация и запуск Vagrant: Вы выполнили команду
vagrant init ubuntu/focal64
, а затемvagrant up
в среде PowerShell. Это стандартная процедура для развертывания виртуальной машины с использованием Vagrant и VirtualBox. -
Создание правила переадресации портов: Вы создали правило переадресации портов для подключения к вашей виртуальной машине. Это необходимо, поскольку Виртуальная Машина находится в собственном изолированном сетевом пространстве, и для доступа к ней из WSL и Windows требуется корректная настройка сетевых маршрутов.
-
Проверка конфигурации DNS в WSL: Вы выполнили команду
cat /etc/resolv.conf
, чтобы увидеть, какие DNS-серверы используются в WSL. -
Попытка подключения через SSH: Вы попробовали выполнить команду
ssh -p 3322 [email protected]
и получили сообщение о временном истечении соединения.
Корень проблемы
Как выясняется, проблема заключается в настройках брандмауэра Windows и взаимодействии с WSL. По умолчанию, Windows и WSL имеют различия в сетевых стеков, что может привести к проблемам с сетевыми соединениями.
Брандмауэр Windows: По умолчанию брандмауэр может блокировать входящие соединения на порту, используемом для SSH (в вашем случае это 3322). Это может объяснить проблему «Connection timed out», так как ваш SSH-запрос может быть заблокирован брандмауэром.
Решение
Согласно вашему обновленному комментарию, вы нашли решение вашей проблемы. Добавление нового правила для входящих соединений в брандмауэр Windows позволило установить соединение. Вот основные шаги, которые помогли решить проблему:
-
Открытие панели управления брандмауэра Windows:
- Перейдите в Панель управления и откроете Брандмауэр Windows.
- Выберите «Дополнительные параметры».
-
Создание нового правила для входящих соединений:
- В разделе «Правила для входящих подключений» выберите «Создать правило…».
- Выберите «Порт», затем «TCP» и введите номер порта (3322).
- Разрешите подключения (Allow the connection).
- Убедитесь, что правило применяется для всех профилей (Доменный, Частный, Общедоступный).
-
Проверка и повторное подключение:
- После настройки правила попробуйте снова выполнить команду SSH для проверки соединения.
Заключение
Проблемы с подключением к виртуальным машинам из WSL могут быть вызваны различными настройками сети и брандмауэра. Важно понимать, что любой защитный механизм, включенный в Windows, может блокировать входящие соединения, что требует дополнительной настройки.
Если у вас возникли дополнительные вопросы или потребуется помощь с другой проблемой, не стесняйтесь обращаться!