Как подключиться по SSH к Ubuntu, запущенному в VirtualBox
.jpg?w=1600&h=900&fit=crop)
Виртуальные машины удобны для тестирования ПО, настройки окружений и оптимального использования серверного железа. VirtualBox — популярный open-source гипервизор с множеством функций. В этой статье описано, как подключиться по SSH к Ubuntu, запущенной внутри VirtualBox, и как сделать это безопасно.
Что понадобится
- Гостевая ОС: Ubuntu Server или Desktop внутри VirtualBox.
- Хост: компьютер, с которого вы будете подключаться по SSH.
- Права администратора (sudo) в гостевой системе.
Краткое определение: SSH — безопасный протокол удалённого доступа, позволяющий запускать команды и передавать файлы между машинами.
Шаг 1 — Установка SSH на гостевую Ubuntu
SSH-сервер (openssh-server) должен быть установлен и запущен на гостевой ОС. На хосте нужен SSH-клиент (обычно уже установлен в Linux/macOS; на Windows можно использовать PuTTY или встроенный OpenSSH).
- Запустите виртуальную машину в VirtualBox.
- Откройте терминал на гостевой Ubuntu и выполните:
sudo apt update
sudo apt install openssh-server- Служба SSH обычно запускается автоматически. Проверьте статус:
sudo systemctl status ssh- Если на гостевой системе включён брандмауэр UFW, разрешите порт SSH (22):
sudo ufw allow 22/tcp
sudo ufw reloadПримечание: на время настройки можно временно открыть порт, но в финальной конфигурации рассмотрите ограничение доступа по IP и использование ключей.
Шаг 2 — Настройка сети VirtualBox (порт-форвардинг для NAT)
По умолчанию VirtualBox создаёт NAT-адаптер для ВМ. NAT даёт интернет из гостя, но скрывает гостя от внешних подключений. Чтобы подключаться по SSH с хоста, используйте перенаправление портов (Port Forwarding).
- В менеджере VirtualBox нажмите правой кнопкой на виртуальную машину → Settings (Настройки) или выделите VM и нажмите Ctrl + S.
- Перейдите в раздел «Сеть».
- Разверните «Advanced» и нажмите «Port Forwarding».
Нажмите на плюс (+) и добавьте правило:
- Name: SSH (или любое удобное имя)
- Protocol: TCP
- Host IP: 127.0.0.1 (localhost) — если хотите доступ только с хоста
- Host Port: 2222 (или другой свободный порт на хосте)
- Guest IP: IP гостя (например, 10.0.2.15) — можно оставить пустым для любого
- Guest Port: 22
Нажмите OK и, при необходимости, перезапустите VM.
Совет: оставьте Host IP пустым, если нужно разрешить подключения с других машин в вашей сети (но только если так безопасно).
Альтернативный вариант — мостовой адаптер (Bridged)
Если вы хотите, чтобы гость получил IP в той же сети, что и хост, переключите интерфейс на Bridged Adapter. Тогда гость будет доступен по своему IP и SSH можно будет вызывать напрямую на 22 порту без форвардинга. Этот вариант проще при наличии локальной сети, но требует сетевой конфигурации и может повлиять на безопасность.
Шаг 3 — Подключение по SSH с хоста
На хосте используйте команду, где Host Port — тот, что указали (например, 2222):
ssh -p 2222 @127.0.0.1 Например:
ssh -p 2222 mwizak@127.0.0.1Введите пароль пользователя гостя при запросе.
Важно: замените mwizak на реальное имя пользователя гостевой Ubuntu.
Проверка и отладка
Если подключение не проходит, проверьте по шагам:
- На госте: sudo systemctl status ssh — служба активна?
- На госте: sudo ss -tlnp | grep :22 — слушает ли порт 22?
- На хосте: nc -zv 127.0.0.1 2222 — тест соединения к локальному порту форварда.
- Убедитесь, что VirtualBox использует NAT и правило порт-форвардинга настроено для правильной VM.
- Если Guest IP указан в правиле, проверьте, что это актуальный IP гостя (ip addr show).
Краткие команды для диагностики на госте:
ip a
sudo ss -tlnp | grep ssh
sudo journalctl -u ssh -e
sudo ufw status verboseБезопасность: рекомендации и жёсткие настройки
SSH безопасен по умолчанию, но он — цель атак. Рекомендации:
- Используйте ключи SSH (public/private) и отключите аутентификацию по паролю.
- На клиенте: ssh-keygen -t ed25519
- Скопировать ключ на гость: ssh-copy-id -p 2222 user@127.0.0.1
- Запретите вход для root: в /etc/ssh/sshd_config выставьте PermitRootLogin no
- Отключите пароли: PasswordAuthentication no (после установки ключей!)
- Ограничьте доступ по IP через ufw: sudo ufw allow from 192.168.1.0/24 to any port 22
- Установите fail2ban для защиты от брутфорса: sudo apt install fail2ban
- Меняйте стандартный порт только как дополнительная мера (security by obscurity не заменит ключи и firewall).
Пример базовой конфигурации /etc/ssh/sshd_config (только ключевые параметры):
Port 22
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
AllowUsers youruserПосле изменений перезапустите SSH: sudo systemctl restart ssh
Мини-руководство: быстрый чек-лист для подключения
- Установить openssh-server в госте.
- Убедиться, что sshd запущен.
- Настроить Port Forwarding (HostPort 2222 → GuestPort 22) при NAT.
- На хосте выполнить ssh -p 2222 user@127.0.0.1.
- Настроить ключи и отключить парольную аутентификацию.
- Включить fail2ban и сузить правила ufw.
Критерии приёмки
- SSH-соединение устанавливается с хоста за 5 секунд после ввода команды.
- Вход по паролю отключён, доступ по ключу работает.
- Служба ssh активна и слушает порт 22 в госте.
- Port forwarding корректно перенаправляет порт хоста на гостя.
Тестовые сценарии (acceptance)
- Успешное подключение с парой ключей: клиент хранит private key, а публичный ключ есть в ~/.ssh/authorized_keys на госте.
- Попытка входа по паролю при отключённой PasswordAuthentication завершается отказом.
- При перезапуске VM правило порт-форвардинга сохраняется и работает.
- fail2ban блокирует несколько подряд неудачных попыток логина.
Частые ошибки и их решения
- “Connection refused” — sshd не запущен или порт неправилен. Проверьте sudo systemctl status ssh и ss -tlnp.
- “Connection timed out” — проблема с сетевой конфигурацией VirtualBox или брандмауэром на хосте/госте.
- Неправильный Guest IP в правиле форварда — оставьте поле пустым или укажите текущий IP гостя.
Когда стоит использовать Bridged вместо NAT
- Нужно, чтобы гость был видим в локальной сети (например, для тестирования сетевых сервисов с других устройств).
- Bridged даёт гостьу IP от DHCP вашей сети, но требует контроля доступа и повышения внимания к безопасности.
Ролевые чек-листы
Администратор:
- Установил openssh-server
- Настроил ufw и fail2ban
- Отключил root и парольную аутентификацию
- Проверил журналы на предмет неудачных логинов
Разработчик:
- Сгенерировал ключи
- Поместил публичный ключ в гостевой ~/.ssh/authorized_keys
- Тестировал подключение и передачу файлов (scp, rsync)
Мини-методология миграции на ключи SSH
- Сгенерировать ключ на клиенте (ssh-keygen).
- Скопировать публичный ключ на гостя (ssh-copy-id или вручную).
- Проверить логин с ключа.
- Отключить PasswordAuthentication в sshd_config.
- Мониторить логи и fail2ban.
Быстрая шпаргалка команд
- Установка SSH: sudo apt install openssh-server
- Статус: sudo systemctl status ssh
- Проверить порт: sudo ss -tlnp | grep :22
- Открыть порт в UFW: sudo ufw allow 22/tcp
- Перезапуск SSH: sudo systemctl restart ssh
Риски и меры смягчения
- Риск: брутфорс — мера: fail2ban + ключи + ограничение по IP
- Риск: уязвимости в SSH-версии — мера: обновление пакетов и мониторинг CVE
- Риск: неправильный форвард портов — мера: документировать правила и хранить их в конфигурации VM
Короткое резюме
SSH к гостевой Ubuntu в VirtualBox настраивается за несколько шагов: установить openssh-server, настроить port forwarding (или bridged), подключиться по нужному порту и обязательно защитить соединение ключами и брандмауэром. Применяйте чек-листы и тестовые сценарии, чтобы убедиться, что доступ корректен и безопасен.
Важно: перед изменением настроек sshd_config всегда оставляйте активную сессию, чтобы восстановить доступ в случае ошибки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента