Wie kann ich es einrichten, damit ich SSH in meine VMWare-Gast-VM einbinden kann?

16

Aus irgendeinem Grund ist die Dokumentation zu diesem Prozess im Internet nicht ausreichend oder veraltet. Grundsätzlich habe ich eine virtuelle VMWare-Gastmaschine in VMWare Fusion (unter Ubuntu 10.10) und Mac OSX 10.6 als Host. Ich möchte in der Lage sein, SSH vom Mac auf die Linux-VM zu übertragen. Wie kann ich die Dinge so konfigurieren, dass dies möglich ist?

Derek Thurn
quelle
Verwandte Themen : superuser.com/questions/729712/… Zumindest unter Windows können Sie nur eine IP-Adresse festlegen, die automatisch von VMWare eingerichtet wird.
Ben

Antworten:

13

absolut - es geht nur darum, eine lokale oder überbrückte Schnittstelle zu verwenden und die IP-Adresse des Systems zu ermitteln, auf dem der SSH-Server ausgeführt wird (mit dem Befehl ifconfig). Installieren Sie den Openssh-Server auf der VM, verwenden Sie Ihren SSH-Client und fertig.

Wenn Sie eine NAT-Schnittstelle verwenden, ist diese möglicherweise komplizierter und wird im Allgemeinen nicht empfohlen.

Geselle Geek
quelle
1
Für Leute, die nicht wissen, vergessen Sie nicht, den ssh-Server mit zu starten, service sshd startoder wenn Sie ihn beim Booten starten möchtenchkconfig sshd on
Anthony Hatzopoulos
21

Tatsächlich gibt es eine ganze Reihe guter Gründe, NAT für Ihre VMs zu verwenden, anstatt für eine überbrückte Schnittstelle. (Dies ist eine alte Frage, aber als erstes Ergebnis stellte sich die Frage, wie dies zu tun ist und wie ich von VirtualBox migriere es die ganze Zeit, also dachte ich, es lohnt sich hinzuzufügen)

Nur einige Gründe, NAT zu verwenden, sind:

  • Es ist einfach und portabel
  • Wenn Sie sich in einem Kunden-LAN befinden, das eine bekannte MAC-Adresse benötigt, um eine IP zu erhalten (andernfalls müssen Sie versuchen, nicht verwendete zu erraten und einen Konflikt zu riskieren, und im Allgemeinen schlechte Aufmerksamkeit auf sich ziehen :)),
  • Dinge wie das Zulassen, dass Ihre VMs einen einzelnen Proxy-Server auf Ihrem Host verwenden (IE, wenn Sie nicht das Netzwerk steuern, in dem Sie sich befinden), oder das Filtern des Broadcast-Verkehrs (Windows usw.) auf dem Weg nach draußen in einem günstiger Ort.
  • in der Lage zu sein, ihnen eine feste oder reservierte IP zuzuweisen, so dass Sie von außerhalb des Hosts nach Namen / IP suchen können (auch hier, wenn Sie mit einer überbrückten Schnittstelle keine Reservierungen im Netzwerk erhalten können)
  • Vor allem aber können Sie sich hinter einer einzigen Firewall - Konfiguration auf Ihrem Host verstecken und Dinge auf eine geschütztere Weise zwischen Ihnen / ihnen austauschen, anstatt jede VM der Natur auszusetzen und sie alle einzeln schützen zu müssen usw .. Genau wie bei einem Internetmodem / Router

Für meinen Fall (VMWare Workstation 10, Linux-Host, OS X-Gast) und jeden, der darauf stößt, ist dies die Übersicht darüber, was für mich funktioniert hat. Neben dem Waffeln und Was-wäre-wenn gibt es eigentlich nur 3 Hauptschritte.

  • Zunächst müssen Sie also entscheiden, was Sie Ihrer VM / Ihrem Gast von "außerhalb" Ihres Hosts erlauben möchten (beachten Sie, dass Sie dies wie unten beschrieben problemlos vom Host selbst erreichen können). Eine sichere Möglichkeit wäre, nur SSH (Port 22) für Computer in Ihrem Subnetz verfügbar zu machen / zuzulassen. Sie können auch Port 80/443 zulassen, wenn Sie einen Webserver auf der VM usw. haben, und Sie können auch einen "Tunnel" verwenden, um mit SSH auf andere Dienste zuzugreifen (siehe Beispiel unten), und FUSE / SSHFS verwenden, um Ihrem Host zuzuweisen Dateisystemzugriff. (Oder die Funktion für freigegebene Ordner unter VMWare, die ich jedoch noch nicht verwendet habe.)

Die Idee ist also wie folgt: "Erlaube Dingen im lokalen Netzwerk meines Hosts (z. B. 10.1.1.0/24 oder 192.168.1.0/24), eine Verbindung zu Port 22222 auf dem Host herzustellen, die wir an Port 22 von a weiterleiten bestimmter Gast ". Natürlich muss es sich um einen bestimmten Gast handeln (dies macht es umso nützlicher, Ihre IPs konfigurieren zu können und Sie können sie alle an einem Ort ändern, ohne jede VM zu öffnen), genauso wie dies über Ihren Internet-Router geschieht, um Spielesachen zuzulassen durch usw.

  • Nachdem Sie sich entschieden haben, welche Dienste Sie benötigen, müssen Sie fortfahren

    • Erlaube Verbindungen auf deinem Host-Rechner zum "externen" Port über iptables / Firewall. Port 22 wird möglicherweise bereits von sshd auf dem Host verwendet, sodass Sie möglicherweise etwas wie 22222 verwenden. Fügen Sie in diesem Fall Folgendes zu /etc/ufw/before.rules hinzu (und starten Sie ufw neu).

      # Ihre lokale Netzwerk- / Subnetzmaske könnte etwa 10.1.1.0/24 sein ...

      -A ufw-before-input -p tcp --dport 22222 -m state --state NEW -s mein_subnetz_und_maske -j ACCEPT `

    • Geben Sie Ihren VMs eine reservierte IP-Adresse in der Haupt-DHCP-Konfiguration von VMware ( optional, aber einfacher zu verwenden, wenn Sie sie vom Host aus "lochen" möchten ), indem Sie etwas Ähnliches am Ende von / etc / vmware / hinzufügen. 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; 
      }
      
    • Weisen Sie VMWare an, Verbindungen von 22222 an guest: 22 weiterzuleiten, indem Sie diese zu dem Abschnitt [incomingtcp] in /etc/vmware/vmnet8/nat/nat.conf hinzufügen. Starten Sie dann die VMware-Dienste neu (siehe Hinweis unten).

      [incomingtcp]

      22222 = 192.168.198.10:22

    • Sie müssen möglicherweise auch Port 22-Verbindungen in Ihrem Gast zulassen , je nachdem, was es ist / ob es eine eigene Firewall hat. In diesem OS X - Gastfall sollte die "Remote - Anmeldung" über die Freigabeeinstellungen aktiviert werden, unter Linux möglicherweise über UFO wie auf dem obigen Host usw

Sobald dies erledigt ist, können Sie sich auf Ihrem Laptop oder einem anderen Computer im LAN befinden, auf Ihre Workstation (VMware-Host) auf 22222 ssh und Sie werden an den Gast verwiesen, an den Sie weitergeleitet werden sollen. Wie oben erwähnt, können Sie, wenn Sie auch sagen, dass Sie in der Lage sein möchten, eine Verbindung zu einem Postgres-Server auf dem Gast (oder einem vnc-Server, der oft unverschlüsselt ist) herzustellen, denselben Befehl tunneln (anstatt ihn auch zur dhcp conf hinzuzufügen). Zum Beispiel

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

und Sie würden über die IP-Weiterleitung in VMware an den Gast weitergeleitet und könnten Ihr pgadmin3-Tool auf localhost verweisen: 54320 (nicht privilegiert) auf Ihrem Laptop, und Ihr Datenverkehr im Netzwerk würde verschlüsselt. (Hinweis 'localhost' wird dort bereits an den Gast weitergeleitet)

Anmerkungen

  • Es gibt alle möglichen Möglichkeiten, dies zu tun. Zum einen könnten Sie einfach einen Tunnel zum Host erstellen und die IP des Gasts in -L angeben, und es würde "ausbrechen" und Sie dorthin verweisen, aber die Option nat.conf ist nett und praktisch, und Sie müssen es nicht jedes Mal eingeben. Es gibt auch andere Möglichkeiten der Portweiterleitung
  • Ich hatte in ein paar Threads einer virtuellen Netzwerk-Benutzeroberfläche einen Verweis darauf gesehen, um dies zu tun (wie dies bei virtualbox der Fall ist), aber ich konnte ihn in dieser Version nicht finden
  • Ich verwende kein Windows. Obwohl ich davon ausgehe, dass die Konfiguration als Host sehr ähnlich ist, bin ich mir nicht sicher. Die NAT-Konfigurationen sollten jedoch für jeden VMware-Gast funktionieren (obwohl ich keine anderen Versionen von VMWare verwendet habe).
  • VMware richtet eine Route ein, damit der Host den NAT-Gast direkt kontaktieren kann, IE von der Host-Konsole, ich kann den NAT-Gast 192.168.198.10 (wie oben definiert) direkt pingen / ssh usw.

    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
    
  • Aus einer Linux-Notiz geht hervor, dass mit systemd init einiges an VMware herumgespielt wird, um automatisch zu starten, und außerdem habe ich festgestellt, dass ich VMware nicht einfach neu starten kann (VMCI wird nicht erneut geladen) und neu starten muss mein Rechner macht das NAT / DHCP-Zeug über Stick, aber vielleicht hast du das Problem nicht. Es gibt jedoch einige Threads mit systemd-Lösungen
Herdingofthecats
quelle
Hört sich gut an, aber ufw scheint auf meinem OS X 10.9.5-Computer nicht vorhanden zu sein. Hatte das etwas älteres OS X, aber jetzt etwas anderes?
Steve Jorgensen
Hey @SteveJorgensen, ufw ist unter Linux (Mein Host ist Linux und Gast war in dieser Antwort OS X), aber es ist die gleiche Idee mit OS X als Host; Ermöglichen Sie den Zugriff auf einen bestimmten Port (in Beispiel 22222) auf dem Host mit einem geeigneten Tool, und weisen Sie VMWare an, die Weiterleitung an den Gast durchzuführen. Die andere Erwähnung von ufw war, dass, was auch immer Sie als Gast haben, möglicherweise auch eine Firewall aktiviert ist, sodass Sie sich möglicherweise beim Gast anmelden und Zugriff auf den Port gewähren müssen, zu dem Sie umgeleitet haben (in obigem Fall 22)
herdingofthecats
Ich habe im Moment kein OS X zur Verfügung, aber ich scheine mich zu erinnern, ipfwirgendwann verwendet zu haben. Ich hatte eine schnelle Suche nach Ihnen und sah nicht viele hilfreiche Beiträge, aber diese Erwähnungen pfctl, die ich in einem anderen Beitrag sehe, scheinen der Ersatz für pfctl in OS X 10.10 zu sein. Ich kann es
leider
2

Um die Dinge zu vereinfachen:

  1. Führen Sie Ihre VM aus
  2. Wählen Sie im Menü> Virtuelle Maschine> Netzwerkadapter> Überbrückt.
  3. In Ihrer VM, finden Sie Ihre IP - Adresse, wie unter Linux: ifconfig.
  4. Vom Host ssh using ssh user@ip.

Ich gehe davon aus, dass ein SSH-Dienst installiert ist und ausgeführt wird.

zed
quelle
1

Anstatt die IP für SSH zu kennen, habe ich Avahi auf meinen Linux-Gästen so eingerichtet, dass es einen dynamischen Hostnamen sendet. Lesen Sie meine Antwort hier: /superuser//a/710233/242604

Hoffe das hilft!

berto
quelle
-1

Sie können eine Bridge-Netzwerkschnittstelle verwenden, über die eine Verbindung zum Internet und eine einfache SSH-Verbindung hergestellt werden können.

Hieu
quelle