Не работает ssh ubuntu на виртуальной машине
Проблемы с подключением к серверу Ubuntu в виртуальной машине
Я не очень разбираюсь в серверах Ubuntu и ssh-соединениях, но я хотел бы разрешить ssh-соединения на машине с Ubuntu. Я пытаюсь подключиться (ssh) к этой машине с Ubuntu (которую я настроил на виртуальной машине). Это статус сервера:
И это информация о хосте:
Однако я не могу установить соединение:
ssh: подключение к хосту 10.0.2.15 порт 22: истекло время ожидания соединения
Я думаю, что я что-то упустил, и я был бы рад любой помощи.
2 ответа
В VirtualBox > Машина> Настройки> Сеть> Адаптер 1
Выберите Attached to: Bridged Adapter и название вашей сетевой карты (возможно, она уже выбрана)
ИСПОЛЬЗУЯ МОСТОВЫЙ АДАПТЕР
Настройте свой SSH в хост-машине:
Откройте свой терминал и выполните эту команду для правильной настройки ssh:
С помощью Network Bridged Adapter настройки:
выберите Bridged Adapter для варианта Attached to
Перейдите на свою виртуальную машину Ubuntu из терминала, запустите:
Теперь вернитесь в хост-машину и подключитесь к виртуальной машине Ubuntu, используя IP получил в шаге 3:
ИСПОЛЬЗОВАНИЕ NAT ADAPTER
Настройте свой SSH в хост-машине:
Откройте свой терминал и выполните эту команду для правильной настройки ssh:
С помощью Network NAT Adapter настройки:
Добавьте следующее в появившуюся таблицу:
Теперь вернитесь в хост-машину и подключитесь к виртуальной машине Ubuntu, используя IP получил в шаге 3:
Замечания:
Свободные порты выбираются при использовании брандмауэра как на хосте, так и на гостевой
Попытка SSH к локальной ВМ Ubuntu с Putty
Я установил виртуальную машину сервера Ubuntu, установил OpenSSH и сейчас пытаюсь подключиться к нему с помощью Putty. В Putty, в поле «Имя хоста», я поместил «Ubuntu», учитывая, что я думал, что это называется, когда я настраивал виртуальную машину. Тем не менее, я просто получаю сообщение об ошибке: «Тайм-аут соединения».
Я также попытался вставить «127.0.0.1» в имя хоста в Putty и просто получить «Отказ в соединении». Обратите внимание, что я выполнил переадресацию портов для SSH и HTTP в Oracle VM, поэтому я не знаю, как его запустить.
Это означает, что вы не можете напрямую получить доступ к любому хосту частной сети из сети хоста. Для этого вам нужна переадресация портов. В сетевых настройках вашей виртуальной машины вы можете, например, настроить VirtualBox, чтобы открыть порт 22 на 127.0.1.1 ( адрес обратной связи вашего хоста) и перенаправить любой трафик на порт 22 10.0.2.1 (внутренний адрес вашей виртуальной машины)
Таким образом, вы можете указать putty на порт 22 127.0.1.1, и VirtualBox перенаправит это соединение на вашу виртуальную машину, где его демон ssh ответит, что позволит вам войти в систему.
Я хотел использовать putty для подключения к моей Ubuntu на виртуальной коробке (по соображениям комфорта, VB просто странный. Я не могу работать, если он не на правильном терминале). Так или иначе,
Единственным недостатком использования адаптера только для хоста является то, что ваша гостевая ОС не будет иметь доступа к более широкой сети (например, Интернет).
Если вам также требуется, чтобы у вашей виртуальной машины был доступ к Интернету, оставьте Адаптер 1 в качестве NAT и включите Адаптер 2, настроенный как адаптер только для хоста. Это позволит вашей виртуальной машине подключаться к Интернету с помощью NAT, а также устанавливать локальное подключение к вашему хосту с помощью Host-Only.
Установка Ubuntu Server
на виртуальную машину Virtualbox
и настройка SSH сервера.
Практически любому веб-разработчику, рано или поздно, приходится сталкиваться с веб серверами. Даже если Вы работаете в достаточно крупной компании и за работу с сервером отвечает специально обученный человек, знать как устроен сервер все равно не будет лишним.
Сегодня мы установим сервер Ubuntu на виртуальную машину и у Вас появиться возможность с ним поэкспериментировать. Установить, например, Node.js или базу данных. Установить NGINX, Apache, изменить настройки и т.д.
Для этого совершенно не обязательно тратить деньги и покупать место у хостера.
1. Подготовка к установке.
Ссылки на скачивание:
Для начала скачаем и установим виртуальную машину VirtualBox, сам сервер Ubuntu и программы для связи с нашим сервером. Если у Вас система Windows и установлен PowerShell, то достаточно скачать и установить WinSCP, если PowerShell не установлен, то нужно будет скачать PuTTY. Для систем Linux дополнительных программ не требуется. К сожалению для MacOS подсказать не смогу.
Здесь будет рассмотрена установка и настройка Ubuntu Server 18.04 на Windows. Однако установка и настройка на другие системы отличается только способом подключения к SSH серверу.
2. Установка Ubuntu Server
Нажимаем кнопку «Создать», называем ubuntu, выбираем разрядность как у Вашей системы и соглашаемся со всем, что предложено по умолчанию.
Теперь нужно указать место хранения виртуальной машины. Я предпочитаю хранить подобные вещи не на системном диске. Жмем на иконку папки и выбираем желаемый диск и директорию. Имя оставляем по умолчанию ubuntu.
Ниже предлагается указать максимальный размер виртуального диска. Дело в том, что динамический виртуальный диск подразумевает не бесконечное расширение, а то, что занимать он будет столько, сколько в нем записано. Но не больше, чем мы укажем при его создании. Поэтому зададим нашему диску гигов 20. Для обучения, думаю, хватит. Можете задать больше.
Нажимаем «Создать». Далее жмем кнопку «Настроить» и выбираем вкладку Сеть. Первый адаптер оставляем без изменений. Заходим во вкладку «Адаптер 2», включаем его и выбираем «Виртуальный адаптер хоста». Жмем «ОК».
Теперь нажимаем кнопку «Запустить». Появмться окно выбора установочного диска. Жмем на кнопку с папкой, далее «Добавить» и выбираем скачанный образ Ubuntu Server. Жмем «продолжить».
Начнется установка сервера. Выбираем Английский язык, выбираем обновление во время установки и затем везде кликаем [Done].
Для перехода между пунктами используем клавишу Tab. Для выбора «Continue» используем стрелку вниз.
Указываем свое имя, имя сервера, имя пользователя, под которым будете заходить и пароль пользователя. Подтверждаем пароль пользователя. Далее обязательно отмечаем установку OpenSSH Server. Для этого нажимаем клавишу Пробел. В поле установки дополнений ничего не выбираем и не нажимаем «Cancel update and reboot». Установка обновлений может занять достаточно много времени. Ждем.
На этом установка Ubuntu Server закончена. Дальше будем настраивать.
3. Настраиваем подключение по SSH
Для начала создадим пароль для пользователя «ROOT». Это пользователь Ubuntu, который имеет расширенные права (аналогично пользователю «Администратор» в Windows). Для этого вводим:
Необходимо будет ввести свой пароль, затем ввести новый пароль для рута и подтвердить новый пароль.
Теперь разрешим руту входить по SSH. Для этого отредактируем файл sshd_config. Вводим:
sudo nano /etc/ssh/sshd_config
Возможно потребуется ввести свой пароль (не рута!). Находим строчку #PermitRootLogin prohibit-password, раскомментируем ее и заменяем prohibit-password на yes
sudo service ssh restart
Теперь временно настроим сетевое подключение для SSH. Временно потому, что после перезагрузки такая настройка уже работать не будет и придется вводить комманду заново. Набираем:
sudo ifconfig enp0s8 192.168.56.101
Проверяем. Набираем ifconfig и видим подлючение enp0s8
Теперь открываем PowerShell и подключаемся к нашему серверу (если PowerShell то устанавливаем PuTTY и используем его):
В перый раз при входе на незнакомый адрес, PowerShell спросит разрешения. Пишем Yes. Вводим пароль рута и заходим на сервер.
Теперь увеличим время жизни сессии SSH. Если определенное время, при подключении по SSH, не производить никаких действий, то подключение прерывается. И потом приходится подключаться заново. Порой это раздражает. Поэтому время жизни сессии я рекомендую увеличить.
Пролистываем файл вниз и добавляем следующие строчки:
TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 60
Как на изображении ниже.
Сохраняем файл и закрываем редактор. Возвращаемся в PowerShell и перезапускаем SSH сервер:
sudo service ssh restart
Если мы вошли как root пользователь то слово sudo можно не писать.
Следующим шагом мы настроим постоянное подключение enp0s8. Для этого возвращаемся в WinSCP, выходим из папки ssh и заходим в netplan (/etc/netplan). Открываем файл 00-installer-config.yaml и прописываем следующие строчки:
enp0s8:
dhcp4: no
addresses: [192.168.56.101/24]
В результате файл должен выглядеть так:
Сохраняем файл и закрываем редактор. Закрываем WinSCP. Возвращаемся в PowerShell и набираем reboot чтобы перезапустить наш сервер. Позле перезапуска снова входим по SSH для проверки.
На этом установка и первоначальная настройка Ubuntu Server закончена.
Как подключиться к виртуальной машине VirtualBox по SSH
После установки серверного дистрибутива Linux на виртуальную машину VirtualBox вы можете обнаружить, что подключение по SSH не работает. Это связано с тем, что по умолчанию на VirtualBox используется подключение к интернету с помощью NAT.
При таком способе подключения у вас нет возможности подключаться к виртуальной машине из своей реальной операционной системы. В частности, вы не сможете подключиться по SSH.
В данной статье мы рассмотрим сразу два способа, как можно решить эту проблему. Первый вариант – проброс портов через NAT, а второй – использование сетевого моста. Оба этих способа сохраняют доступ к интернету на виртуальной машине.
Проброс портов для SSH
Для проброса портов вам нужно знать IP адрес, который присваивается виртуальной машине. Для этого запустите виртуальную машину и выполните на ней команду « ifconfig ». В ответ вы получите информацию о сетевых подключениях, в которой будет указан и IP адрес. В нашем случае был получен IP адрес – « 10.0.2.15 ».
Обратите внимание, если в вашей системе нет команды « ifconfig », то ее нужно будет установить отдельно. В случае Debian и Ubuntu Linux это можно сделать с помощью команды « apt-get install net-tools ».
После того как мы узнали IP адрес виртуальную машину нужно выключить и открыть ее настройки в программе VirtualBox.
В настройках виртуальной машины нужно открыть раздел « Сеть », открыть дополнительные настройки и перейти к пробросу портов.
После этого откроется окно для проброса портов. Здесь нужно нажать на кнопку « Добавить » и заполнить следующие данные:
После проброса порта закрываем все окна с помощью кнопки « ОК ».
После этого можно подключаться к виртуальной машине по SSH. Для этого можно использовать клиент OpenSSH, который доступен в Windows 10. Поскольку порт « 2222 » на основной системе был проброшен на порт « 22 » на виртуальной машине, то для подключения по SSH нам нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 2222 » — используемый порт на основной системе.
Как видно по скриншоту вверху, данный способ отлично работает, и мы успешно подключились по SSH к виртуальной машине VirtualBox.
Подключение через сетевой мост
Также есть альтернативный способ подключения к виртуальной машине по SSH для этого нужно изменить тип подключения с « NAT » на « Сетевой мост ». В этом случае виртуальная машина будет подключена к вашей локальной сети и получит IP адрес от вашего роутера из того же диапазона, что и ваша основная система.
Для этого нужно выключить виртуальную машину и зайти в ее свойства в программе VirtualBox. В настройках нужно зайти в раздел « Сеть » и включить тип подключения « Сетевой мост ».
После этого нужно запустить виртуальную машину и выполнить на ней команду « ifconfig » для того, чтобы узнать, какой IP адрес она получила от роутера. В нашем случае был получен IP адрес « 192.168.1.214 ».
После этого к виртуальной машине можно подключаться по SSH. Для этого нужно просто использовать IP адрес, который был ей присвоен роутером. Например, для того чтобы подключиться с помощью клиента OpenSSH нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 192.168.1.214 » — это ее IP адрес.
Аналогично работает и подключение с помощью PuTTY. Вводим « 192.168.1.214 » и подключаемся по стандартному порту « 22 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
Подключение к локальной виртуальной машине Linux по SSH или как решить задачу о двух стульях ничьей
Некоторые воскликнут: «Но ведь можно поставить две системы в DualBoot или виртуальную машину, с которой можно общаться напрямую!» К сожалению, ни один из этих трёх способов не является панацеей. При использовании первого приходится постоянно скакать между системами, а также он доступен не на всех устройствах (на моём MacBook Pro 2017-ого года поставить нативно Linux — весьма неприятное занятие). Второй также требует работы с двумя разными системами, что может сильно ударить по чувству перфекционизма, а также требует весьма больших мощностей для использования средств по сглаживанию разницы между ними. Про третий же сейчас чуть подробнее расскажу.
Начну с предупреждения о том, что если вам в разработке необходим доступ к графическому интерфейсу, то этот способ не для вас (если пользуетесь Windows, то рассмотрите вариант с WSL. Linux там очень урезанный, зато можно подключить к ней X Window System). Будем подключаться к дистрибутиву на базе ядра Linux, но этот способ можно интерполировать на другие системы. Также замечу, что изначально мною рассчитывалось сделать небольшой туториал для одногруппников, но тема оказалась достаточно интересной, чтобы попытаться превратить её в статью. Поэтому то, о чём я собираюсь говорить может показаться некоторым пользователям Хабра слишком тривиальным.
У меня же возникла потребность в таком решении в виду следующих причин:
Для начала перейдём на сайт Ubuntu и скачаем установочный образ Ubuntu Server
Можно, в принципе, выбрать и любой другой дистрибутив, даже всемогущий Arch, но мне было лениво.
После чего создаём новую виртуальную машину в вашей любимой для этого программе. На Parallels и VMWare это делается просто и естественно, а на VirtualBox или QEMU придётся покурить мануалы. В случае первых двух рекомендую отключить разные не особо нужные плюшки типа «общих принтеров». Также можете попробовать ограничить производительность виртуальной машины для сохранения энергии, но не переборщите. В противном случае система просто не запустится.
В общем, желательно немного покопаться в настройках нашей подопечной для максимальной производительности. Самое главное — это опция «Общая сеть» (Shared network). Она позволяет машине выходить в сеть, и другим устройствам к ней удалённо подключаться.
Выберите язык и начните установку Ubuntu Server. Вас должен встретить такой экран —
(Да, он просит выбрать язык ещё раз)
Дальше ничего сложного (собственно, и не было). Просто тыкайте «далее» прямо как в Windows. Но, как говорится:
Потом настройте пользователя и запомните его логин (не путайте с полным именем) и пароль.
Также хочу отметить, что установщик попытается скачать дополнительные 66 мегабайт пакетов.
Собственно, вскоре установка завершится и вам будет предложено перезагрузить виртуальную машину, но перед этим удостоверьтесь, что образ установочного диска был отключен от неё. Потом, если всё прошло хорошо, вы загрузитесь в вашу новую систему, но сначала введите ваш логин и пароль.
После этого всё должно быть готово, однако вы можете попробовать дополнительно настроить подключение по SSH. Для этого отредактируйте с помощью nano или Vim (чтобы из него выйти, наберите :wq) файл /etc/ssh/sshd_config от имени администратора:
Для этого просто раскомментируйте нужные вам строки (удалите ‘#’ перед каждой из них). После чего перезапустите службу для подключения по SSH:
Далее нам нужно узнать ip адрес нашего устройства. Для этого нам пригодится команда: Найдите среди вывода программы ваше устройство (иногда его название можно определять в настройках виртуальной машины) и запомните его адрес, помеченный как inet:
После всего этого окошко с нашей системой можно свернуть. Теперь давайте всё-таки попробуем к ней подключиться. для этого введём в терминал родной системы
где «hovushka» и «10.211.55.28» нужно заменить на ваш логин и ip адрес. Далее вас попросят ввести ваш пароль и вуаля! Вы зашли в Ubuntu:
Но на этом веселье не заканчивается! Мы, конечно, настроили подключение, и можем управлять виртуальной машиной, но это весьма бесполезно, так как мы не можем получить так просто доступ к её локальным файлам из родной системы. Конечно, Vim и по SSH прекрасно работает, но всё ещё отличий от простого использования виртуальной машины практически нет.
Я предлагаю поступить более креативно и воспользоваться sshfs. На MacOS он ставится летящей походкой через brew (он попросит сначала поставить FUSE). После этого достаточно ввести команду
где так же следует заменить логин и ip адрес, а «
/SSH» на какую-нибудь удобную для вас директорию. Далее к ней будет примонтирован домашний каталог нашего пользователя из виртуальной машины:
Теперь можно файлами виртуальной системы как угодно распоряжаться из-под хоста и пользоваться привычными программами и приложениями, запуская нужные команды через подключенный по SSH терминал:
У этого способа, несмотря на его большую аутентичность, есть свои минусы. Во-первых многие из них унаследованы от обычного использования виртуализации (например, падение производительности). Во-вторых, будет присутствовать небольшая задержка в записи изменений на виртуальный диск (вимерам может не понравится). Ну и в-третьих, некоторые виртуальные машины умеют видеть файлы с родной системы, но из командной строки это сложнее настроить и вам придётся пользоваться окном самой виртуальной машины, что накладывает ряд ограничений.
Напоследок хочу упомянуть, что несколько идей было взято с этого сайта.