Попытка SSH к локальной ВМ Ubuntu с Putty


145

Я установил виртуальную машину сервера Ubuntu, установил OpenSSH и сейчас пытаюсь подключиться к нему с помощью Putty. В Putty, в поле «Имя хоста», я поместил «Ubuntu», учитывая, что я думал, что это называется, когда я настраивал виртуальную машину. Тем не менее, я просто получаю сообщение об ошибке: «Тайм-аут соединения».

Я также попытался вставить «127.0.0.1» в имя хоста в Putty и просто получить «Отказ в соединении». Обратите внимание, что я выполнил переадресацию портов для SSH и HTTP в Oracle VM, поэтому я не знаю, как его запустить.


FWIW bridged / host только не работал для меня, но я смог обойти его, по сути, только «отключив» SSH (в конце концов, scp может пойти обоими путями), поэтому мне не нужен доступ по SSH в гостях.
rogerdpack

Ответы:


183

VirtualBox создаст частную сеть (10.0.2.x), которая будет подключена к вашей хост-сети с помощью NAT . (Если не настроено иначе.)

Это означает, что вы не можете напрямую получить доступ к любому хосту частной сети из сети хоста. Для этого вам нужна переадресация портов. В сетевых настройках вашей виртуальной машины вы можете, например, настроить VirtualBox, чтобы открыть порт 22 на 127.0.1.1 ( адрес обратной связи вашего хоста) и перенаправить любой трафик на порт 22 10.0.2.1 (внутренний адрес вашей виртуальной машины)

Таким образом, вы можете указать putty на порт 22 127.0.1.1, и VirtualBox перенаправит это соединение на вашу виртуальную машину, где его демон ssh ответит, что позволит вам войти в систему.


20
Спасибо, это сработало для меня. Из cygwin я могу теперь, ssh username@127.0.1.1и я нахожусь. Панель, которая вам нужна, это Настройки-> Сеть-> Переадресация портов, и моя теперь выглядит так, как показано на: imgur.com/BjGh3N2
user7543

38
Это НЕ будет работать, если у вас уже работает ssh на вашем хосте, потому что порты перекрываются. Перенаправьте порт 127.0.1.1:2222 на 10.0.2.X: 22, а затем запустите 'ssh 127.0.1.1 -p 2222' с вашего хоста '
dzlatkov

8
Также убедитесь, что у вас установлен openssh-сервер на клиентской ОС. sudo apt-get установить openssh-сервер
Иллюминаты

17
Просто сам этот вопрос - спасибо за объяснение. Я в основном следовал тому, что вы сказали. Я зашел в настройки и мое соединение показало «NAT». Я щелкнул опцию «Переадресация портов» в нижней части экрана. Я дал ему имя «PuTTY-port-fwd», протокол TCP, IP-адрес хоста 127.0.0.1, хост-порт 2222, гостевой IP-адрес 10.0.2.15, гостевой порт 22. Затем я запустил PuTTY и установил его на 127.0.0.1 порт 2222, и он подключился к мой OpenSUSE vm. Спасибо, ребята, надеюсь, это поможет кому-нибудь в будущем ;-)
BubbleMonster

3
Это сработало для меня, хотя я должен был сказать VirtualBox, чтобы открыть порт 2222 на 127.0.0.1. Тогда я смог войти с помощьюssh -p 2222 user@127.0.0.1
mchen.ja

44

Я хотел использовать putty для подключения к моей Ubuntu на виртуальной коробке (по соображениям комфорта, VB просто странный. Я не могу работать, если он не на правильном терминале). Так или иначе,

  1. Убедитесь, что на вашем Linux установлен клиент ssh. Если нет, установите его sudo apt install ssh.
  2. Выключите ОС.
  3. Теперь на вашем VB перейдите Settings -> Network ->по Adapter 1выбору Host-only adapter-> нажмите OK.
  4. Теперь запустите вашу ОС. Бегать ifconfig; теперь адрес инета - это ваш IP.
  5. Используйте это и запустите на вашей замазке. Войдите с вашими учетными данными.

Единственным недостатком использования адаптера только для хоста является то, что ваша гостевая ОС не будет иметь доступа к более широкой сети (например, Интернет).

Если вам также требуется, чтобы у вашей виртуальной машины был доступ к Интернету, оставьте Адаптер 1 в качестве NAT и включите Адаптер 2, настроенный как адаптер только для хоста. Это позволит вашей виртуальной машине подключаться к Интернету с помощью NAT, а также устанавливать локальное подключение к вашему хосту с помощью Host-Only.


4
«bridged» установит IP-адрес на вашем локальном интерфейсе и обеспечит доступ к большему Интернету
Duke

2
Преимущество использования двух интерфейсов, как описано здесь, по сравнению с мостовым соединением, заключается в том, что вы не полагаетесь на локальный сервер DHCP, принимающий ваши запросы. Большинство dhcp-серверов в общественных местах (аэропорт, самолеты, гостиницы и даже большинство сетей компании) не предлагают второй IP-адрес через тот же адаптер Wi-Fi, поэтому виртуальная машина с мостовым соединением не будет работать в этой среде. Вот действительно хороший шаг за шагом, как настроить эту конкретную конфигурацию: christophermaier.name/2010/09/01/…
Ив

Работайте как обаяние, но вы должны поставить адаптер 2 на 3-й вариант, чтобы люди оставили NAT в покое
user3502626

большое спасибо.
Люк

большое спасибо. но когда я изменяю настройку Ubuntu Network с NATна, host only adapterон больше не может подключаться к интернету, какое-либо решение?
Люк

19

Во-первых, вам нужно решить, подключена ли ваша виртуальная машина к вашей хост-машине через мостовое соединение или через NAT, но по-другому, вам нужно поместить IP-адрес виртуальной машины в замазку, чтобы иметь возможность подключиться к ip, в терминале виртуальной машины. эта команда, чтобы показать вам IP-адрес машины (а 127.0.0.1 не является IP-адресом машины)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

в этом случае мой IP-адрес будет 10.0.2.15,

Сначала попытайтесь убедиться, что вы можете общаться на базовом уровне с виртуальной машиной, откройте окно терминала на своем хосте и попытайтесь пропинговать виртуальную машину.

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

Если вы получите результат ant, то убедитесь, что на виртуальной машине запущена служба ssh в терминале вашей виртуальной машины с правами root,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

Это говорит о том, что у нас есть служба / процесс с PID (2361), называемый sshd (демон OpenSSH), прослушивающий порт 22.

Вы можете проверить, правильно ли работает служба, попытавшись подключиться к ней по ssh с виртуальной машины,

VM # ssh 127.0.0.1

Затем вы должны убедиться, что вы не блокируете порт 22 в брандмауэре / iptables, я не могу в это поверить, но все равно проверьте это. В VM введите эту команду, чтобы показать вам iptables,

VM # iptables -nvL INPUT

в выводе вы должны иметь следующую строку:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW

Пробовал, и, видимо, мой IP-адрес 10.0.2.15. Я попытался ввести это в Putty и просто получил connection timed outошибку снова. Я также попробовал nvLкоманду, которую вы упомянули, и получил Chain INPUT (policy accept......chain FORWARD.....
кучу

Я переписываю свой ответ еще несколькими пунктами, которые вы можете проверить, пожалуйста, дайте мне знать.
Рабин

2
Что делать, если пинг 10.0.2.15 превышен? Я использую NAT.
Дан Даскалеску


Для удобства: iptables -A INPUT -p tcp --dport ssh -j ACCEPTразрешит входящий трафик, если вы не видите tcp в ваших iptables.
Эрик Ходгинс

15

Мое разрешение было похоже на «Роман Т», однако мне нужно было добавить несколько дополнительных шагов. В моем случае виртуальная машина Ubuntu Server 14 работала на рабочем столе Windows 8 в домене Windows 2008. Если бы я попробовал NAT или Bridge, я мог бы получить доступ к Интернету, но не смог подключиться через SSH.

Если бы я попробовал Host Only Adapter, то я бы смог подключиться к SSH, но не смог получить доступ к Интернету.

Я тоже пробовал переадресацию портов, но без радости. Открыл Wireshark, и он просто не нашел ВМ.

Поэтому я решил добавить второй сетевой адаптер.

метод

С выключенной виртуальной машиной

  1. Нажмите «Настройки»> «Сеть». Нажмите «Адаптер 1» и выберите «Мостовой адаптер».
  2. Нажмите Adapter 2 и выберите Host Only Adapter
  3. Выберите «Файл»> «Настройки»> «Сети под сетями NAT», если вы не видите сеть «NAT», нажмите значок «+», чтобы добавить сеть «NAT».
  4. Нажмите Сети только для хоста, если вы не видите сеть только для хоста, нажмите + значок, чтобы добавить

Запустите ВМ

  1. Чтобы увидеть сетевой адаптер, вам нужно набрать

    ifconfig -a
    
  2. Вы можете видеть, что сетевой адаптер добавлен с MAC-адресом, но не IP-адресом?

  3. Если это так, то вам нужно отредактировать / etc / network / interfaces для настройки DHCP. Пример ниже с использованием VI / VIM, но вы можете использовать редактор по вашему выбору

    sudo vi /etc/network/interfaces
    
  4. добавить строки

    auto eth1
    iface eth1 inet dhcp
    
  5. сохранить и выйти из файла.
  6. Затем попробуйте перезапустить сетевой сервис, используя команду ниже

    sudo service networking restart
    
  7. Или, если это не удается, перезапустите ВМ.
  8. После перезапуска введите ниже, чтобы увидеть, если вам eth1 был назначен IP-адрес

    ifconfig -a
    
  9. если так, то посмотрите, можете ли вы использовать SSH на виртуальной машине

Я испробовал ваше решение, но для нового интерфейса не назначен IP-адрес. Более того, в моем VBox включен DHCP.
Атлан

12

Следующие инструкции работают с Ubuntu 14.04 и Oracle VirtualBox 4.3.30.

Сделайте это в VirtualBox:

  1. Щелкните правой кнопкой мыши вашу виртуальную машину, выберите «Настройки», а затем выберите «Сеть».

  2. Рядом с «Attached to» выберите «Host-only Adapter». В качестве примечания, «Bridged Adapter» также будет работать, проверьте документацию VirtualBox для более подробной информации о каждой опции.

Сделайте это внутри вашей виртуальной машины:

  1. Найдите свой IP-адрес в сети, открыв терминал и напечатав ifconfig. Обратите внимание на IP-адрес, отображаемый рядом с eth0 в разделе «inet addr». Вы также можете увидеть свой IP-адрес, если щелкнуть значок «Сеть» в правом верхнем углу рабочего стола, а затем выбрать «Информация о соединении».

  2. Установите openssh-сервер, набрав в терминале следующее:

    sudo apt-get install openssh-server
    
  3. На всякий случай перезапустите виртуальную машину.

Теперь вы можете подключиться из PuTTY, используя IP-адрес из шага 1 выше и порт 22.


2

Для Ubuntu 18.04 и VirtualBox 5.2:

  1. Создать интерфейс хост-сети

    я. В Virtualbox нажмите File/ Host Network Manager.

    II. Если у вас еще нет адаптера хост-сети (по умолчанию vboxnet0), нажмите Create.

  2. Включить настройки адаптера только для хоста для виртуальной машины

    я. На Virtualbox щелкните правой кнопкой мыши на вашей виртуальной машине и выберите Settings.

    II. Нажмите Networkи выберите Adapter 2.

    III. Нажмите Enable Network Adapter.

    внутривенно Под Attached to:отбором Host-only Adapter. Должно появиться имя адаптера, созданного на шаге 1 (по умолчанию vboxnet0).

  3. Настройка параметров сети в ВМ

    я. Запустите виртуальную машину и проверить , какой интерфейс был добавлен: ip a. Ищите интерфейс, который не имеет inetадреса. По моему это было enp0s8.

    II. Редактировать /etc/netplan/01-netcfg.yaml. например sudo vi /etc/netplan/01-netcfg.yaml.

    III. Под настройками оригинального адаптера добавьте детали конфигурации:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    Это назначает статический IP-адрес для вашей виртуальной машины для удобства SSH. Если вы хотите dhcpобрабатывать адресацию, не указывайте адрес и конфигурацию шлюза и установите dhcp4значение yes.

    внутривенно Обновить файл конфигурации: sudo netplan apply.

  4. SSH в вашу виртуальную машину

    я. Если вы не установили sshв VM: sudo apt install ssh.

    II. От хост - машины, SSH в VM: ssh <username>@192.168.56.2.


Спасибо, спас мой день!
Anber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.