Jak mogę to skonfigurować, aby móc SSH na mojej maszynie wirtualnej VMWare gościa?

16

Z jakiegoś powodu dokumentacja tego procesu w Internecie jest dość nieaktualna lub nieaktualna. Zasadniczo mam maszynę wirtualną VMWare gościa w VMWare Fusion (z systemem Ubuntu 10.10), a jako host mam Mac OSX 10.6. Chcę mieć możliwość SSH z komputera Mac na maszynę wirtualną z systemem Linux. Jak mogę skonfigurować rzeczy, aby było to możliwe?

Derek Thurn
źródło
Powiązane: superuser.com/questions/729712/... Przynajmniej w systemie Windows możesz po prostu ssh do adresu IP skonfigurowanego automatycznie przez VMWare.
Ben

Odpowiedzi:

13

absolutnie - to tylko kwestia użycia lokalnego lub zmostkowanego interfejsu i wypracowania adresu IP systemu z uruchomionym serwerem ssh (za pomocą polecenia ifconfig). zainstaluj openssh-server na maszynie wirtualnej, użyj klienta ssh i gotowe.

Jeśli używasz interfejsu NAT, może to być bardziej skomplikowane i ogólnie nie jest zalecane.

Journeyman Geek
źródło
1
Dla osób, które nie wiedzą, nie zapomnij uruchomić serwera ssh za pomocą service sshd startlub jeśli chcesz go uruchomić podczas uruchamiania systemuchkconfig sshd on
Anthony Hatzopoulos
21

W rzeczywistości istnieje cały szereg dobrych powodów, aby używać NAT na swoich maszynach wirtualnych zamiast mostkowanego interfejsu. (To stare pytanie, ale pojawiło się jako mój pierwszy wynik szukania, jak to zrobić, migrując z VirtualBox tam, gdzie ja to robię to cały czas, więc pomyślałem, że warto dodać)

Tylko kilka powodów, dla których warto korzystać z NAT:

  • To łatwe i przenośne
  • jeśli korzystasz z sieci LAN klienta, która wymaga znanego adresu MAC, aby uzyskać adres IP (w przeciwnym razie będziesz musiał zgadywać nieużywane i ryzykować konflikt i ogólnie zwracać na siebie uwagę :)),
  • rzeczy takie jak zezwalanie maszynom wirtualnym na używanie jednego serwera proxy na hoście (IE, jeśli nie kontrolujesz sieci, w której się znajdujesz) lub możliwość zapory ogniowej / filtrowania ich ruchu emisji (Windows itp.) przy wychodzeniu w jednym Wygodne miejsce.
  • możliwość przypisania im stałego lub zarezerwowanego adresu IP, abyś mógł się do nich odwoływać po nazwie / adresie IP spoza hosta (ponownie, jeśli nie możesz uzyskać rezerwacji w sieci za pomocą mostkowego interfejsu)
  • ale przede wszystkim pozwala ukryć się za pojedynczą konfiguracją zapory na hoście i dzielić się między sobą rzeczami w bardziej chroniony sposób, zamiast narażać każdą maszynę wirtualną na „dziką” i chroniąc ją indywidualnie itp. .. Tak jak w przypadku modemu / routera internetowego

Tak czy inaczej, w moim przypadku (VMWare Workstation 10, host Linux, OS X Guest) i każdy, kto się na to natknie, oto przegląd tego, co zadziałało dla mnie. Oprócz gofrowania i „co jeśli”, tak naprawdę są tylko 3 główne kroki.

  • Najpierw musisz zdecydować, na co chcesz zezwolić swojej maszynie wirtualnej / gościowi „spoza” hosta (zwróć uwagę, jak poniżej, możesz łatwo uzyskać do niego dostęp od samego hosta). Bezpiecznym zakładem byłoby po prostu udostępnienie / zezwolenie tylko SSH (port 22) na maszyny w twojej podsieci. Możesz także zezwolić na port 80/443, jeśli masz serwer WWW na maszynie wirtualnej itp. Możesz także użyć „tunelu”, aby uzyskać dostęp do innych usług za pomocą SSH (podam przykład poniżej), i użyj FUSE / SSHFS, aby dać hostowi dostęp do systemu plików .. (Lub narzędzie do folderów współdzielonych na VMWare, ale jeszcze go nie używałem).

Pomysł jest więc taki: „Pozwól, aby rzeczy w sieci lokalnej mojego hosta (np. 10.1.1.0/24 lub 192.168.1.0/24) łączyły się z portem 22222 na hoście, który przekażemy dalej do portu 22 określony gość ”. Oczywiście musi to być konkretny gość (dzięki temu możliwość skonfigurowania adresów IP jest tym bardziej przydatna, że ​​można je zmienić w jednym miejscu bez otwierania każdej maszyny wirtualnej), podobnie jak w przypadku routera internetowego, aby umożliwić grę przez itp.

  • Następnie, decydując, które usługi, musisz

    • zezwalaj na połączenia na twoim hoście z portem „zewnętrznym” poprzez iptables / firewall. Port 22 prawdopodobnie będzie już używany na hoście przez sshd, więc możesz użyć czegoś takiego jak 22222. W takim przypadku dodaj coś takiego do /etc/ufw/before.rules (i zrestartuj ufw)

      # Twoja maska ​​sieci lokalnej / podsieci może być podobna do 10.1.1.0/24 ...

      -A ufw-before-input -p tcp --port 22222 -m state --state NEW -s moja_siewa_siewa i maska ​​-j AKCEPTUJĘ `

    • nadaj swoim maszynom wirtualnym zarezerwowany adres IP w głównej konfiguracji VMware DHCP ( opcjonalnie, ale łatwiej polegać, jeśli chcesz „otworkować” go z hosta ), dodając coś takiego na dole / 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; 
      }
      
    • Powiedz VMWare, aby przekazywał połączenia z 22222 do gościa: 22, dodając to do sekcji [incomingtcp] /etc/vmware/vmnet8/nat/nat.conf, a następnie uruchom ponownie usługi vmware (patrz uwaga poniżej)

      [incomingtcp]

      22222 = 192.168.198.10:22

    • Może być również konieczne zezwolenie na połączenia portu 22 u gościa, w zależności od tego, co to jest / jeśli ma własną zaporę. W tym przypadku gościa OS X miało to umożliwić „zdalne logowanie” poprzez ustawienia udostępniania, w systemie Linux może to być za pośrednictwem ufw jak na hoście powyżej itp.

Więc kiedy to wszystko zrobisz, możesz być na swoim laptopie lub innym komputerze w sieci LAN, ssh na stacji roboczej (host vmware) 22222, a ty zostaniesz w towarzystwie gościa, któremu kazałeś go przekazać. Jak wspomniano powyżej, jeśli powiesz również, że chciałbyś móc połączyć się z serwerem postgres na gościu (lub z serwerem VNC, który często jest niezaszyfrowany), możesz tunelować to samo polecenie (zamiast dodawać go również do dhcp conf). Na przykład

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

i zostaniesz zalogowany do gościa przez ip ip w vmware, i możesz skierować swoje narzędzie pgadmin3 na localhost: 54320 (nieuprzywilejowany) na twoim laptopie, a twój ruch w sieci zostanie zaszyfrowany. (Uwaga „localhost” jest już przesłany do gościa)

Notatki

  • Istnieją różne sposoby, aby to zrobić. Po pierwsze, możesz po prostu tunelować hosta i określić adres IP gościa w -L, a on „wybucha” i wskaże ci tam, ale opcja nat.conf jest fajna i wygodne i nie musisz go wpisywać za każdym razem. Istnieją również inne sposoby przekierowania portów
  • Widziałem odniesienie do kilku wątków GUI sieci wirtualnej, aby to zrobić (podobnie jak virtualbox ma), ale nie mogłem go znaleźć w tej wersji
  • Nie używam systemu Windows, więc nawet jeśli zakładam, że skonfigurowanie go jako hosta byłoby bardzo podobne, nie jestem pewien. Konfiguracje NAT powinny jednak działać dla każdego gościa vmware (chociaż nie korzystałem z żadnych innych wersji VMWare)
  • VMware ustawia trasę, aby host mógł kontaktować się bezpośrednio z gościem NAT, tj. Z konsoli hosta, mogę bezpośrednio pingować / ssh itp. Gość NAT 192.168.198.10 (zdefiniowany powyżej)

    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
    
  • Z uwagi na Linuksa, jest trochę majstrowania przy vmware przy systemd init, aby ładnie się ładowało`automatycznie, a wraz z tym stwierdziłem, że nie mogę po prostu zrestartować vmware (vmci nie ładuje się ponownie) i muszę zrestartować mój komputer, aby powyższe elementy NAT / DHCP pozostały, ale możesz nie mieć problemu. Istnieje jednak kilka wątków z rozwiązaniami systemowymi
zaganiając koty
źródło
Brzmi świetnie, ale ufw nie wydaje się być obecny na moim komputerze z systemem OS X 10.9.5. Czy to coś, co miał starszy OS X, ale teraz używa czegoś innego?
Steve Jorgensen,
Cześć @SteveJorgensen, ufw jest pod Linuksem (Mój host to Linux, a gościem był OS X w tej odpowiedzi), ale taki sam pomysł dotyczy OS X jako hosta; zezwól na dostęp do określonego portu (w powyższym przypadku 22222) na hoście za pomocą dowolnego narzędzia, które jest odpowiednie, i powiedz VMWare, aby wykonało przekazywanie do gościa. Inną wzmianką o ufw było to, że cokolwiek masz jako gość, może również mieć włączoną zaporę ogniową, więc może być konieczne zalogowanie się do gościa i umożliwienie dostępu do portu, do którego przekierowujesz (w powyższym przypadku 22)
herdingofthecats
Obecnie nie mam dostępnego OS X, ale wydaje mi się, że ipfww pewnym momencie pamiętam, że go używałem . Musiałem szybko wyszukać dla was, i nie zobaczyć wiele przydatnych wiadomości, ale to wspomina pfctl, co widzę w kolejny post wydaje się być zamiennikiem dla pfctl w OS X 10.10 up. Nie mogę przetestować tego przepraszam, ale mam nadzieję, że to trochę pomoże
zebranie kotów
2

Aby uprościć:

  1. Uruchom swoją maszynę wirtualną
  2. Z menu> Maszyna wirtualna> Karta sieciowa> Bridged.
  3. W swojej VM, znaleźć swój adres IP, takich jak Linux: ifconfig.
  4. Z hosta użyj ssh ssh user@ip.

Zakładam, że masz zainstalowaną i uruchomioną usługę SSH.

zed
źródło
1

Zamiast znać adres IP do SSH, skonfigurowałem Avahi na moich gościach z Linuksem, aby nadawał dynamiczną nazwę hosta, sprawdź moją odpowiedź tutaj: /superuser//a/710233/242604

Mam nadzieję że to pomoże!

berto
źródło
-1

Możesz użyć interfejsu sieciowego mostu, który pomaga w połączeniu z Internetem i łatwym połączeniu SSH.

Cześć
źródło