Как я могу настроить его так, чтобы я мог использовать SSH в моей гостевой виртуальной машине VMWare?


16

По какой-то причине документация по этому процессу в интернете отсутствует или устарела. По сути, у меня есть гостевая виртуальная машина VMWare в VMWare Fusion (под управлением Ubuntu 10.10), и в качестве хоста у меня Mac OSX 10.6. Я хочу иметь возможность SSH с Mac на Linux VM. Как я могу настроить вещи так, чтобы это было возможно?


Связано: superuser.com/questions/729712/… По крайней мере, в Windows вы можете просто установить ssh на IP-адрес, автоматически настроенный VMWare.
Бен

Ответы:


13

абсолютно - это всего лишь вопрос использования только локального или мостового интерфейса и определения IP-адреса системы, на которой запущен сервер ssh (с помощью команды ifconfig). установите openssh-сервер на ВМ, используйте ваш ssh-клиент, и все готово.

Если вы используете интерфейс NAT, он может быть более сложным и обычно не рекомендуется.


1
Для тех, кто не знает, не забудьте запустить сервер ssh с помощью service sshd startили, если вы хотите запустить его при запуске,chkconfig sshd on
Энтони Хатзопулос,

21

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

Просто несколько причин использовать NAT:

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

В любом случае, для моего случая (VMWare Workstation 10, хост Linux, OS X Guest) и всех, кто сталкивается с этим, это обзор того, что сработало для меня. Помимо вафли и что-если, на самом деле есть только 3 основных шага.

  • Итак, сначала вам нужно решить, что вы хотите разрешить вашей ВМ / гостю «снаружи» вашего хоста (обратите внимание, как показано ниже, вы сможете легко добраться до него с самого хоста). Безопасной ставкой было бы просто выставить / разрешить только SSH (порт 22) для машин в вашей подсети. Вы также можете разрешить порт 80/443, если у вас есть веб-сервер на виртуальной машине и т. Д., И вы также можете использовать «туннель» для доступа к другим службам с использованием SSH (приведу пример ниже), а также использовать FUSE / SSHFS для указания вашего хоста. доступ к файловой системе .. (или средство общих папок на VMWare, но я еще не использовал его).

Так что идея примерно такая: «Разрешить вещам в локальной сети моего хоста (например, 10.1.1.0/24 или 192.168.1.0/24) подключиться к порту 22222 на хосте, который мы перенаправим вдоль порта 22 конкретный гость ". Конечно, это должен быть конкретный гость (это делает настройку ваших IP-адресов еще более полезной, и вы можете менять их все в одном месте, не открывая каждую виртуальную машину), так же, как это делается через интернет-маршрутизатор, чтобы позволить игровым вещам и т. д.

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

    • разрешите соединения на вашем хост-компьютере с «внешним» портом через iptables / firewall. Возможно, порт 22 уже будет использоваться на хосте sshd, поэтому вы можете использовать что-то вроде 22222. В этом случае добавьте что-то подобное в /etc/ufw/before.rules (и перезапустите ufw)

      # Ваша локальная сеть / маска подсети может выглядеть примерно так: 10.1.1.0/24 ...

      -A ufw-before-input -p tcp --dport 22222 -m состояние -state NEW -s my_subnet_and_mask -j ПРИНЯТЬ `

    • дайте вашей виртуальной машине зарезервированный 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, добавив это в раздел [inputtcp] в /etc/vmware/vmnet8/nat/nat.conf, а затем перезапустите службы (службы) vmware (см. Примечание ниже)

      [Incomingtcp]

      22222 = 192.168.198.10:22

    • Вам также может потребоваться разрешить подключения к порту 22 в гостевой системе, в зависимости от того, что это такое / если он имеет собственный брандмауэр. В этом гостевом случае OS X это было для включения «удаленного входа в систему» ​​через настройки общего доступа, в Linux это может быть через ufw, как на хосте выше, и т. Д.

Итак, как только это будет сделано, вы можете быть на своем ноутбуке или другом компьютере в локальной сети, подключившись по ssh к своей рабочей станции (хосту vmware) по номеру 22222, и вы будете направлены к гостю, которому сказали, чтобы он направил вас. Как упомянуто выше, если вы также сказали, что хотите иметь возможность подключиться к серверу postgres на гостевой (или vnc-сервере, который часто не зашифрован), вы можете туннелировать в той же команде (вместо того, чтобы добавить ее также в conf dhcp). Например,

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

и вы будете ssh'ed к гостю через ip forward в vmware, и сможете указать свой инструмент pgadmin3 на localhost: 54320 (непривилегированный) на вашем ноутбуке, и ваш трафик в сети будет зашифрован. (Обратите внимание, что localhost там уже переадресован гостю)

Примечания

  • Есть разные способы сделать это. Во-первых, вы можете просто туннелировать хост и указать ip гостя в -L, и он «вырвется» и укажет вам, но опция nat.conf хороша и удобно, и вам не нужно вводить его каждый раз. Есть и другие способы переадресации портов
  • Я видел ссылку на пару потоков виртуального сетевого интерфейса, чтобы сделать это (как в 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 выше придерживаться, но у Вас, возможно, нет проблемы. Хотя есть некоторые темы с решениями systemd

Звучит отлично, но 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. Запустите свою ВМ
  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.