Як я можу його налаштувати, щоб я міг ввести SSH у свій VMWare гість?


16

Чомусь документації щодо цього процесу в Інтернеті досить бракує або застаріло. В основному, у мене є гостьова віртуальна машина VMWare у VMWare Fusion (працює під управлінням Ubuntu 10.10), і я маю Mac OSX 10.6 в якості хоста. Я хочу мати змогу SSH з Mac до Linux VM. Як я можу налаштувати речі, щоб це можливо?


Пов’язано: superuser.com/questions/729712/… Принаймні, в Windows, ви можете просто сш на IP-адресу, встановлену VMWare автоматично.
— Бен

Відповіді:


13

абсолютно - лише питання використання лише локального або мостового інтерфейсу та опрацювання ip-адреси системи, на якій працює ssh-сервер (за допомогою команди ifconfig). встановіть openssh-сервер у віртуальній машині, використовуйте ваш ssh-клієнт та його виконано.

Якщо ви використовуєте NAT-інтерфейс, це може бути складніше, і його, як правило, не рекомендується.


1
Для людей, які не знають, не забудьте запустити ssh-сервер за допомогою service sshd startабо якщо ви хочете запустити його під час завантаженняchkconfig sshd on
— Anthony Hatzopoulos,

21

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

Лише кілька причин використовувати NAT:

  • Це легко і портативно
  • якщо ви користуєтеся локальною мережею клієнтів, для отримання IP-адреси потрібна відома MAC-адреса (інакше вам доведеться спробувати відгадати невикористані та ризикувати конфліктом, і взагалі привертати до себе погану увагу :)),
  • такі речі, як дозволити вашим віртуальним машинам використовувати один проксі-сервер на своєму хості (IE, якщо ви не керуєте мережею, на якій ви працюєте), або мати можливість брандмауера / фільтрувати їх трансляцію (windows тощо) трафіку на виході за один зручне місце.
  • можливість призначити їм фіксовану або зарезервовану IP-адресу, щоб ви могли посилатися на них по імені / IP з-за меж хоста (знову ж таки, якщо ви не можете отримати бронювання в мережі за допомогою мостового інтерфейсу)
  • але найбільше це дозволяє вам ховатися за єдиним конфігурацією брандмауера на своєму хості та ділитися речами між вами / ними більш захищеним способом, а не піддавати кожен VM «дикому» та захищати їх усіх індивідуально тощо .. Так само, як ви робите з інтернет-модемом / роутером

У будь-якому випадку для мого випадку (VMWare Workstation 10, хост Linux, OS X Guest) та кожного, хто натрапляє на це, це огляд того, що працювало для мене. Крім вафлі та що-небудь, є насправді лише 3 основні кроки.

  • Отже, спершу вам потрібно вирішити, що ви хочете дозволити своєму ВМ / гостю "поза" вашого хоста (зверніть увагу, як нижче, ви зможете легко дістатися до нього з самого хоста). Безпечною ставкою було б просто виставити / дозволити лише SSH (порт 22) машинам у вашій підмережі. Ви також можете дозволити порт 80/443, якщо у вас був веб-сервер на VM тощо, а також ви можете використовувати "тунель" для доступу до інших служб за допомогою SSH (наведемо приклад нижче), а також використовувати FUSE / SSHFS для того, щоб дати хосту доступ до файлової системи .. (Або об'єкт спільної папки у VMWare, але я його ще не використовував).

Тож ідея є приблизно такою: "Дозволити речам у локальній мережі мого хоста (наприклад, 10.1.1.0/24 або 192.168.1.0/24) підключитися до порту 22222 на хості, який ми будемо пересилати разом до порту 22 a конкретний гість ". Звичайно, це повинен бути конкретний гість (Це робить можливість налаштувати ваші IP-адреси ще кориснішими, і ви можете змінити їх в одному місці, не відкриваючи кожен VM), як і робити це через Інтернет-роутер, щоб дозволити ігрові речі через тощо.

  • Далі, вирішивши, які саме послуги, вам потрібно буде

    • дозволити підключення вашого хост-машини до "зовнішнього" порту через iptables / брандмауер. Порт 22, можливо, вже буде використовуватися на хості sshd, тому ви можете використовувати щось на зразок 22222. У цьому випадку додайте щось подібне до /etc/ufw/before.rules (і перезавантажте ufw)

      # Ваша локальна мережа / маска підмережі може бути на зразок 10.1.1.0/24 ...

      -A ufw перед входом -p tcp - доповідь 22222 -m стан - держава NEW -s my_subnet_and_mask -j ACCEPT `

    • надайте вашій ВМ зарезервовані IP-адреси в головному конфігурації VMware DHCP ( необов’язково, але простіше розраховувати, якщо ви хочете "пробити" його від хоста ), додавши щось подібне внизу / etc / vmware / vmnet8 / dhcpd / dhcpd.conf

      # Just like a normal dhcpd reservation
      host my_vm_1 {
           hardware ethernet *your_vm_eth_mac_here**;
           # This is in default range for guests, but outside the 'pool'.
           # - check that it matches your vmware config
           fixed-address 192.168.198.10; 
           # And/or your own internal nameserver etc
           option domain-name-servers 8.8.8.8;
           option domain-name "some_domain_suffix";
           # This is the default default-route of the VM
           option routers 192.168.198.2; 
      }
      
    • Скажіть VMWare переадресовувати з'єднання з 22222 на гість: 22, додавши це до розділу [incomingtcp] /etc/vmware/vmnet8/nat/nat.conf, а потім перезапустіть сервіс (и) vmware (див. Примітку нижче)

      [incomingtcp]

      22222 = 192.168.198.10:22

    • Також вам може знадобитися дозволити підключення до порту 22 у вашого гостя, залежно від того, що це / чи має власний брандмауер. У цьому гостьовому випадку ОС X слід було включити "віддалений вхід" через налаштування спільного доступу, в Linux це може бути через ufw, як на хості вище тощо.

Отже, як тільки це все буде зроблено, ви можете бути на своєму ноутбуці чи іншій машині в локальній мережі, перейдіть на свою робочу станцію (хост vmware) 22222, і ви будете бігти до гостя, про який ви сказали, щоб переслати вас. Як було сказано вище, якщо ви також скажете, що хочете мати можливість підключитися до postgres-сервера на гостьовому сервері (або vnc-сервері, який часто не шифрується), ви можете тунелювати в цій самій команді (замість того, щоб додавати його також до конфіденційності dhcp). Наприклад, наприклад

console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432

і ви будете запрошені до гостя через ip вперед у vmware, і ви могли б вказати свій інструмент pgadmin3 на localhost: 54320 (без приватного доступу) на своєму ноутбуці, і ваш трафік в мережі буде зашифрований. (Примітка "localhost" там уже передано гостю)

Примітки

  • Існують всілякі способи цього зробити. Для одного, ви можете просто тунель для розміщення і вкажіть ip гостя в -L, і він "вирветься" і вкаже вас туди, але варіант nat.conf хороший і зручно, і вам не потрібно вводити його щоразу. Існують також інші способи переадресації портів
  • Я бачив посилання на пару потоків gui віртуальної мережі, щоб це зробити (як у virtualbox), але я не міг знайти його в цій версії
  • Я не використовую Windows, так що, хоча я припускаю, це було б дуже схоже на налаштування як хост, я не впевнений. Налаштування NAT повинні працювати для будь-якого гостя vmware (хоча я не використовував жодної іншої версії VMWare)
  • VMware встановлює маршрут, щоб хост міг зв’язатися з NAT-гостем безпосередньо, IE з консолі хоста, я можу пінг / ssh і т.д. NAT гість 192.168.198.10 (визначено вище)

    console ~> route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    <snip>
    192.168.198.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
    192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
    
  • З нотатки про Linux, є деяке сповіщення з vmware з systemd init, щоб добре запуститися автоматично, і разом з цим я виявив, що не можу просто перезапустити vmware (vmci не завантажується знову), і мені доведеться перезапустити моя машина, щоб зробити NAT / DHCP речі над палицею, але у вас може не виникнути проблеми. Однак є деякі теми з системними рішеннями

Звучить чудово, але, схоже, ufw не присутній на моїй машині OS X 10.9.5. Це щось старше OS X, але тепер замість цього використовується щось інше?
— Стів Йоргенсен

Привіт @SteveJorgensen, ufw знаходиться під Linux (Мій хост - Linux, а в цій відповіді гість був OS X), але це та сама ідея з OS X, що і хост; дозволити доступ до якогось конкретного порту (у вищенаведеному випадку 22222) на хості будь-яким інструментом, який підходить, та скажіть VMWare зробити переадресацію гостю. Інша згадка ufw полягала в тому, що все, що ви маєте в якості гостя, може також увімкнути брандмауер, тож вам може знадобитися увійти до гостя і дозволити доступ до порту, на який ви перенаправлялися (у вищенаведеному випадку 22)
— herdingofthecats

На даний момент у мене немає OS X, але я, мабуть, пам’ятаю, що користувався ipfwв якийсь момент. Я швидко здійснив пошук для вас і не побачив багато корисних дописів, але це згадка pfctl, яку я бачу в іншому дописі, схоже, є заміною pfctl в OS X 10.10 вгору. Я не можу випробувати це шкода, але сподіваюся, що це трохи допомагає
— herdingofthecats

2

Щоб спростити речі:

  1. Запустіть свій VM
  2. З меню> Віртуальна машина> Мережевий адаптер> Міст.
  3. У віртуальній машині, знайти свій IP - адреса, наприклад , як в Linux: ifconfig.
  4. Від хоста, ssh використовуючи ssh user@ip.

Я припускаю, що у вас встановлено і працює служба SSH.


1

Замість того, щоб знати IP для SSH, я налаштував Avahi на своїх гостей Linux, щоб він транслював динамічне ім’я хоста, ознайомтеся з моєю відповіддю тут: /superuser//a/710233/242604

Сподіваюся, це допомагає!


-1

Ви можете використовувати мостовий мережевий інтерфейс, який допомагає підключитися до Інтернету та просте з'єднання SSH

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