Come posso configurarlo in modo da poter SSH nella mia VM guest VMWare?


16

Per qualche ragione, la documentazione su questo processo su Internet è abbastanza carente o obsoleta. Fondamentalmente, ho una macchina virtuale VMWare ospite in VMWare Fusion (con Ubuntu 10.10) e ho Mac OSX 10.6 come host. Voglio essere in grado di SSH dal Mac alla VM Linux. Come posso configurare le cose in modo che ciò sia possibile?


Correlati: superuser.com/questions/729712/… Almeno su Windows, puoi semplicemente ssh a un IP impostato automaticamente da VMWare.
Ben

Risposte:


13

assolutamente - si tratta solo di usare un'interfaccia solo locale o con bridge e di elaborare l'indirizzo IP del sistema che esegue il server ssh (usando il comando ifconfig). installa openssh-server sulla VM, usa il tuo client ssh ed è fatto.

Se si utilizza un'interfaccia NAT, potrebbe essere più complicato e generalmente non è raccomandato.


1
Per le persone che non lo sanno, non dimenticare di avviare il server SSH utilizzando service sshd starto se si desidera avviarlo all'avviochkconfig sshd on
Anthony Hatzopoulos,

21

In realtà, ci sono un sacco di buoni motivi per usare NAT con le tue VM, piuttosto che un'interfaccia a ponte. (Questa è una vecchia domanda, ma è emersa come il mio primo risultato cercando come farlo, migrando da VirtualBox dove lo faccio sempre, quindi ho pensato che valesse la pena aggiungere)

Alcuni dei motivi per utilizzare NAT sono:

  • È facile e portatile
  • se sei su una LAN cliente che richiede un indirizzo MAC noto per ottenere un IP (altrimenti dovrai provare a indovinare quelli inutilizzati e rischiare un conflitto, e in genere attirare cattiva attenzione su te stesso :)),
  • cose come consentire alle VM di utilizzare un singolo server proxy sul tuo host (IE se non controlli la rete su cui ti trovi), o essere in grado di firewall / filtrare il loro traffico di trasmissione (windows ecc.) in uscita in uno posto conveniente.
  • essere in grado di assegnare loro un IP fisso o riservato in modo da poter fare riferimento a loro per nome / IP dall'esterno dell'host (di nuovo, se non è possibile ottenere prenotazioni sulla rete con un'interfaccia a ponte)
  • ma soprattutto, ti permette di nasconderti dietro una singola configurazione del firewall sul tuo host e condividere le cose tra di loro in modo più protetto, piuttosto che esporre ogni VM alla "natura" e doverle proteggere tutte individualmente ecc. .. Proprio come fai con un modem / router Internet

Ad ogni modo, per il mio caso (VMWare Workstation 10, host Linux, OS X Guest) e chiunque si imbatti in questo, questa è la panoramica di ciò che ha funzionato per me. Oltre ai waffling e ai what-if, ci sono davvero solo 3 passaggi principali.

  • Quindi, per prima cosa devi decidere cosa vuoi consentire alla tua VM / guest "dall'esterno" del tuo host (nota come sotto, sarai in grado di accedervi facilmente dall'host stesso). Una scommessa sicura sarebbe solo quella di esporre / consentire solo SSH (porta 22) alle macchine della tua sottorete. Potresti anche consentire la porta 80/443 se avessi un server web sulla VM, ecc. E puoi anche usare un "tunnel" per accedere ad altri servizi usando SSH (forniremo l'esempio di seguito) e usare FUSE / SSHFS per dare il tuo host accesso al filesystem .. (O la funzione di cartella condivisa su VMWare, ma non l'ho ancora usata).

Quindi l'idea è qualcosa del tipo: "Consenti alle cose sulla rete locale del mio host (ad es. 10.1.1.0/24 o 192.168.1.0/24) di connettersi alla porta 22222 sull'host, che inoltreremo alla porta 22 di un ospite specifico ". Ovviamente deve essere un ospite specifico (Questo rende la configurazione dei tuoi IP ancora più utile e puoi cambiarli tutti in un posto senza aprire ogni VM), proprio come farlo attraverso il tuo router Internet per consentire cose di gioco attraverso ecc.

  • Successivamente, dopo aver deciso quali servizi, è necessario

    • consentire connessioni sul computer host alla porta "esterna" tramite iptables / firewall. La porta 22 sarà probabilmente già utilizzata sull'host da sshd, quindi potresti usare qualcosa come 22222. In questo caso, aggiungi qualcosa di simile a /etc/ufw/before.rules (e riavvia ufw)

      # La tua rete locale / maschera di sottorete potrebbe essere qualcosa come 10.1.1.0/24 ...

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

    • dai un indirizzo IP riservato alle tue VM nella configurazione DHCP del VMware principale ( facoltativo, ma più semplice da affidare se vuoi "pinhole" dall'host ), aggiungendo qualcosa di simile in fondo a / 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; 
      }
      
    • Di 'a VMWare di inoltrare le connessioni dal 22222 al guest: 22 aggiungendolo alla sezione [incomingtcp] di /etc/vmware/vmnet8/nat/nat.conf, quindi riavvia i servizi vmware (vedi nota sotto)

      [Incomingtcp]

      22222 = 192.168.198.10:22

    • Potrebbe anche essere necessario consentire le connessioni della porta 22 nel proprio guest, a seconda di cosa sia / se ha un proprio firewall. In questo caso ospite OS X, era per abilitare "l'accesso remoto" tramite le impostazioni di condivisione, su Linux potrebbe essere via ufw come sull'host sopra, ecc.

Quindi, una volta fatto tutto, potresti essere sul tuo laptop o altra macchina sulla LAN, ssh sulla tua stazione di lavoro (host vmware) su 22222, e verrai trasferito all'ospite a cui gli hai detto di inoltrarti. Come accennato in precedenza, se si dice anche che si desidera essere in grado di connettersi al server Postgres sul guest (o server vnc, che spesso non è crittografato), è possibile eseguire il tunneling nello stesso comando (invece di aggiungerlo anche alla configurazione dhcp). Per es

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

e verrai inviato al guest tramite l'ip forward in vmware e potresti indirizzare il tuo strumento pgadmin3 su localhost: 54320 (non priveleged) sul tuo laptop e il tuo traffico sulla rete verrebbe crittografato. (Nota 'localhost' è già stato inoltrato al guest)

Appunti

  • Ci sono molti modi per farlo. Per prima cosa, potresti semplicemente tunnelare per ospitare e specificare l'ip dell'ospite in -L e "scoppiare" e indicarti lì, ma l'opzione nat.conf è bella e conveniente e non è necessario digitarlo ogni volta. Esistono anche altri modi di port forwarding
  • Avevo visto il riferimento a un paio di thread di una GUI di rete virtuale per fare questo (come ha virtualbox), ma non riuscivo a trovarlo in questa versione
  • Non uso Windows, quindi anche se presumo che sarebbe molto simile da configurare come host, non ne sono sicuro. Le configurazioni NAT dovrebbero funzionare per qualsiasi guest vmware (anche se non ho usato altre versioni di VMWare)
  • VMware imposta una route in modo che l'host possa contattare direttamente l'ospite NAT, IE dalla console dell'host, posso eseguire ping / ssh ecc. L'ospite NAT 192.168.198.10 (definito sopra) direttamente

    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
    
  • Da una nota di Linux, c'è un po 'di confusione con vmware con systemd init per avviarsi in modo `automatico', e insieme a quello che ho scoperto non posso semplicemente riavviare vmware (vmci non si carica di nuovo) e devo riavviare la mia macchina per rendere le cose NAT / DHCP sopra stick, ma potresti non avere il problema. Tuttavia, ci sono alcuni thread con soluzioni systemd

Sembra fantastico, ma non sembra essere presente sulla mia macchina OS X 10.9.5. C'era qualcosa di vecchio OS X, ma ora utilizza qualcos'altro?
Steve Jorgensen,

Ehi @SteveJorgensen, ufw è su Linux (il mio host è Linux, e guest era OS X in questa risposta), ma è la stessa idea con OS X come host; consentire l'accesso a una porta specifica (nel caso precedente 22222) sull'host con qualsiasi strumento appropriato e indicare a VMWare di inoltrare al guest. L'altra menzione di ufw era che qualunque cosa tu abbia come ospite, potrebbe anche avere un firewall abilitato, quindi potresti aver bisogno di accedere al guest e consentire l'accesso alla porta verso cui stavi reindirizzando (nel caso precedente, 22)
herdingofthecats

Al momento non ho OS X disponibile, ma mi sembra di averlo usato ipfwad un certo punto. Ho fatto una rapida ricerca per te e non ho visto molti post utili, ma questa menzione pfctl, che vedo in un altro post, sembra essere la sostituzione di pfctl in OS X 10.10 in poi. Non posso provarlo scusate, ma spero che sia di aiuto
herdingofthecats

2

Per semplificare le cose:

  1. Esegui la tua VM
  2. Dal menu> Macchina virtuale> Adattatore di rete> Con ponte.
  3. Nel vostro VM, trovare il vostro indirizzo IP, come ad esempio in linux: ifconfig.
  4. Dall'host, usare ssh ssh user@ip.

Presumo che tu abbia un servizio SSH installato e funzionante.


1

Invece di conoscere l'IP su SSH, ho installato Avahi sui miei ospiti Linux in modo che trasmetta un nome host dinamico, controlla la mia risposta qui: /superuser//a/710233/242604

Spero che sia di aiuto!


-1

È possibile utilizzare un'interfaccia di rete bridge che facilita la connessione a Internet e una facile connessione SSH.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.