Спроба SSH до локального VM Ubuntu за допомогою Putty


145

Я встановив VM сервера Ubuntu, встановив OpenSSH і зараз намагаюся підключитися до нього за допомогою Putty. У Putty, під "Ім'ям хоста", я поставив "Ubuntu", враховуючи, що саме так я вважав, що його називали, коли я налаштовував VM. Однак я просто отримую помилку: "Зв'язок приурочений".

Я також спробував вставити "127.0.0.1" в ім'я хоста в Putty і просто отримати "З'єднання відмовлено". Зауважте, що я здійснив переадресацію портів для SSH та HTTP в Oracle VM, тому я в збитті щодо того, як запустити його.


FWIW-мост / хост тільки не працював для мене, але мені вдалося обійти його, по суті, лише SSH'ing "out" (scp може йти обома способами), тому мені не потрібен SSH доступ в межах гостя.
rogerdpack

Відповіді:


183

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

Це означає, що ви не можете безпосередньо отримати доступ до будь-якого хоста приватної мережі з хост-мережі. Для цього вам потрібна певна переадресація порту. У мережевих налаштуваннях вашого віртуального комп'ютера ви можете, наприклад, налаштувати VirtualBox для відкриття порту 22 на 127.0.1.1 ( адреса зворотного зв’язку вашого хоста) та перенаправити будь-який трафік на порт 22 10.0.2.1 (внутрішня адреса вашого віртуального комп'ютера)

Таким чином, ви можете вказати шпаклівку на порт 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
Також переконайтеся, що у вас є встановлений сервер opensh на ОС клієнта. sudo apt-get install openssh-server
Illuminati

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

Я хотів використовувати шпаклівку для підключення до мого ubuntu на віртуальній коробці (причини комфорту, VB просто дивний. Я не можу працювати, якщо він не є на належному терміналі). У будь-якому випадку,

  1. Переконайтеся, що ssh-клієнт встановлений у вашому Linux. Якщо ні, встановіть його sudo apt install ssh.
  2. Вимкніть живлення ОС.
  3. Тепер на вашому VB піти Settings -> Network ->на Adapter 1вибір Host-only adapter-> натисніть OK.
  4. Тепер запустіть вашу ОС. Бігати ifconfig; тепер адреса inet - це ваш IP.
  5. Скористайтеся цим і запустіть його на шпаклівці. Увійдіть зі своїми обліковими записами.

Єдиним недоліком використання адаптера лише для хостів є те, що ваша гостьова ОС не матиме доступу до ширшої мережі (наприклад, до Інтернету).

Якщо вам також потрібен ваш VM для доступу до Інтернету, залиште адаптер 1 як NAT і ввімкніть адаптер 2, налаштований як адаптер, що приймає лише хоста. Це дозволить вашому VM підключитися до Інтернету за допомогою NAT, а також встановити локальне з'єднання з вашим хостом, використовуючи лише Host-Only.


4
"bridged" поставить ip на ваш локальний інтерфейс і переключить доступ до більшого Інтернету
герцог

2
Перевага використання двох інтерфейсів, описаних тут, в мостовому, полягає в тому, що ви не покладаєтесь на те, що локальний сервер dhcp приймає ваші запити. Більшість серверів dhcp у громадських місцях (аеропорт, літаки, готелі та навіть більшість мереж компаній) не пропонують другого ip через той же адаптер Wi-Fi, тому мостовий VM не працюватиме в таких умовах. Ось справді вдалий крок за кроком про те, як налаштувати цю конкретну конфігурацію: christophermaier.name/2010/09/01/…
Ів Дорфсман

Працюйте як шарм, але вам слід поставити адаптер 2 на 3-й варіант, щоб люди залишали NAT в спокої
user3502626

дуже дякую.
Лука

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

19

Спершу вам потрібно визначитися, чи підключений ваш VM до вашого хост-машини через мостове з'єднання або через NAT, але ефірним способом вам потрібно буде поставити IP-адресу VM в шпаклівку, щоб мати можливість підключитися до ip, у запуску терміналу VM ця команда, щоб показати вам 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,

Спершу спробуйте переконатися, що ви можете спілкуватися на базовому рівні з VM, відкрийте вікно терміналу на своєму хості та спробуйте пінг VM

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

Якщо ви отримаєте мурашиний результат, то переконайтеся, що у вас є служба ssh, що працює на VM, у терміналі типу VM як root,

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

Це говорить про те, що у нас є сервіс / процес з PID (2361), який називається sshd (демон SSSSH), слухаючи порт 22.

Ви можете перевірити, чи сервіс працює правильно, спробувавши перейти до нього з VM,

VM # ssh 127.0.0.1

Далі ви знаходите, щоб переконатися, що ви не блокуєте порт 22 у своєму брандмауері / iptables, я не можу повірити, але перевірити це все одно. У ВМ введіть цю команду, щоб показати вам 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.....т.д.
wickywills

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

2
Що робити, якщо пінг 10,0.2,15 разів вийшов? Я використовую NAT.
Дан Даскалеску


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

15

Моя роздільна здатність була подібною до романської, проте мені потрібно було додати кілька додаткових кроків. У моєму випадку у мене працював Ubuntu Server 14 VM на робочому столі Windows 8 у домені Windows 2008. Якщо я спробував NAT або Bridge, я міг би отримати доступ до Інтернету, але не зміг підключитися через SSH.

Якщо я спробував хост-адаптер тільки тоді, це дозволило б мені SSH працювати на машині, але не мав доступу до Інтернету.

Я також спробував переадресацію Порту і ніякої радості. Відкрив Wireshark, і він просто не знайшов VM.

Тому моїм рішенням було додати другий мережний адаптер.

Метод

З вимкненим VM

  1. Клацніть Налаштування> Мережа Клацніть адаптер 1 і виберіть Брид-адаптер
  2. Клацніть Adapter 2 і виберіть Host Only Adapter
  3. Клацніть Файл> Налаштування> Мережі під NAT Networks, якщо ви не бачите NAT Network, натисніть значок +, щоб додати NAT Network.
  4. Клацніть Мережі, лише для хоста, якщо ви не бачите лише мережі, натисніть + значок, щоб додати її

Запуск VM

  1. Для того, щоб побачити мережний адаптер, вам потрібно ввести

    ifconfig -a
    
  2. Ви можете бачити, що мережевий адаптер додано з mac-адресою, але не IP-адресою?

  3. Якщо так, то вам потрібно відредагувати / etc / network / інтерфейси для налаштування DHCP. Приклад нижче за допомогою VI / VIM, але ви можете використовувати редактор на ваш вибір

    sudo vi /etc/network/interfaces
    
  4. додайте рядки

    auto eth1
    iface eth1 inet dhcp
    
  5. збереження та вихід файлу.
  6. Потім спробуйте перезапустити мережевий сервіс за допомогою команди нижче

    sudo service networking restart
    
  7. Або якщо це не вдається, перезавантажте VM.
  8. Після перезапуску введіть нижче, щоб побачити, чи вам et1 була призначена IP-адреса

    ifconfig -a
    
  9. якщо так, то подивіться, чи можете ви SSH на VM

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

12

Наступні інструкції працювали з Ubuntu 14.04 та Oracle VirtualBox 4.3.30.

Зробіть це у VirtualBox:

  1. Клацніть правою кнопкою миші вашу віртуальну машину, виберіть "Налаштування", а потім виберіть "Мережа".

  2. Поруч із пунктом "Приєднано до" виберіть "Адаптер лише для хоста". Як додаткова примітка, "Мостовий адаптер" також буде працювати, перегляньте документацію на 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. Створіть мережевий інтерфейс хоста

    i. У Virtualbox натисніть File/ Host Network Manager.

    ii. Якщо у вас ще немає адаптера хост-мережі (за замовчуванням vboxnet0), натисніть Create.

  2. Увімкніть налаштування адаптера лише для хоста для VM

    i. На VirtualBox, клацніть правою кнопкою миші на віртуальної машини і виберіть Settings.

    ii. Клацніть Networkта виберіть Adapter 2.

    iii. Клацніть Enable Network Adapter.

    iv. Під Attached to:вибору Host-only Adapter. З'явиться назва адаптера, який ви створили на кроці 1 (за замовчуванням vboxnet0).

  3. Налаштування мережевих налаштувань у програмі VM

    i. Запустіть віртуальну машину і перевірити , який інтерфейс був доданий: 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-адресу для вашого VM для зручності SSH. Якщо ви хочете dhcpобробити адресацію замість цього, залиште адресу та конфігурацію шлюзу та встановіть dhcp4значення yes.

    iv. Оновити файл конфігурації: sudo netplan apply.

  4. SSH у вашу машину управління

    i. Якщо ви не встановили sshв VM: sudo apt install ssh.

    ii. Від хост - машини, SSH в VM: ssh <username>@192.168.56.2.


Дякую, врятував мій день!
анбер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.