Comment puis-je le configurer pour pouvoir SSH dans ma machine virtuelle invitée VMWare?

16

Pour une raison quelconque, la documentation sur ce processus sur Internet est tout à fait manquante ou obsolète. Fondamentalement, j'ai une machine virtuelle VMWare invitée dans VMWare Fusion (exécutant Ubuntu 10.10) et j'ai Mac OSX 10.6 comme hôte. Je veux pouvoir SSH du Mac à la machine virtuelle Linux. Comment puis-je configurer les choses pour que cela soit possible?

Derek Thurn
la source
En relation: superuser.com/questions/729712/… Au moins sous Windows, vous pouvez simplement ssh vers une IP configurée automatiquement par VMWare.
Ben

Réponses:

13

absolument - c'est juste une question d'utiliser une interface locale uniquement, ou pontée, et de déterminer l'adresse IP du système exécutant le serveur ssh (en utilisant la commande ifconfig). installez openssh-server sur la VM, utilisez votre client ssh, et c'est fait.

Si vous utilisez une interface NAT, cela peut être plus compliqué et ce n'est généralement pas recommandé.

Compagnon Geek
la source
1
Pour les personnes qui ne le savent pas, n'oubliez pas de démarrer le serveur ssh en utilisant service sshd startou si vous voulez le démarrer au démarragechkconfig sshd on
Anthony Hatzopoulos
21

En fait, il y a tout un tas de bonnes raisons d'utiliser NAT avec vos machines virtuelles, plutôt qu'une interface pontée. tout le temps, donc j'ai pensé qu'il valait la peine d'ajouter)

Voici quelques raisons d'utiliser NAT:

  • C'est facile et portable
  • si vous êtes sur un réseau local client qui nécessite une adresse MAC connue pour obtenir une adresse IP (sinon vous devrez essayer de deviner les adresses inutilisées et risquer un conflit, et généralement attirer votre attention sur vous :)),
  • des choses comme permettre à vos machines virtuelles d'utiliser un seul serveur proxy sur votre hôte (IE si vous ne contrôlez pas le réseau sur lequel vous êtes), ou être en mesure de pare-feu / filtrer leur trafic de diffusion (Windows, etc.) à la sortie en un seul place convenable.
  • pouvoir leur attribuer une IP fixe ou réservée afin que vous puissiez vous y référer par nom / IP depuis l'extérieur de l'hôte (encore une fois, si vous ne pouvez pas obtenir de réservations sur le réseau avec une interface pontée)
  • mais surtout, il vous permet de vous cacher derrière une seule configuration de pare-feu sur votre hôte, et de partager des choses entre vous / eux de manière plus protégée, plutôt que d'exposer chaque machine virtuelle à la "nature" et d'avoir à les protéger tous individuellement, etc. .. Tout comme vous le faites avec un modem / routeur Internet

Quoi qu'il en soit, pour mon cas (VMWare Workstation 10, hôte Linux, OS X Guest), et toute personne qui tombe dessus, c'est l'aperçu de ce qui a fonctionné pour moi. Mis à part les gaufres et les hypothèses, il n'y a vraiment que 3 étapes principales.

  • Donc, vous devez d'abord décider ce que vous voulez autoriser à votre VM / invité de "l'extérieur" de votre hôte (notez comme ci-dessous, vous pourrez y accéder facilement depuis l'hôte lui-même). Une valeur sûre serait simplement d'exposer / autoriser uniquement SSH (port 22), aux machines de votre sous-réseau. Vous pouvez également autoriser le port 80/443 si vous aviez un serveur Web sur la machine virtuelle, etc., et vous pouvez également utiliser un "tunnel" pour accéder à d'autres services à l'aide de SSH (donne l'exemple ci-dessous), et utiliser FUSE / SSHFS pour donner à votre hôte accès au système de fichiers .. (Ou la fonction de dossier partagé sur VMWare, mais je ne l'ai pas encore utilisée).

Donc, l'idée est quelque chose comme: "Autoriser les choses sur le réseau local de mon hôte (par exemple 10.1.1.0/24, ou 192.168.1.0/24) à se connecter au port 22222 sur l'hôte, que nous transmettrons au port 22 d'un invité spécifique ". Il doit bien sûr s'agir d'un invité spécifique (cela rend la configuration de vos adresses IP encore plus utile, et vous pouvez les modifier en un seul endroit sans ouvrir chaque machine virtuelle), tout comme le faire via votre routeur Internet pour autoriser les jeux. à travers etc.

  • Ensuite, après avoir décidé quels services, vous devrez

    • autorisez les connexions sur votre machine hôte au port "externe" via iptables / pare-feu. Le port 22 sera peut-être déjà utilisé sur l'hôte par sshd, vous pouvez donc utiliser quelque chose comme 22222. Dans ce cas, ajoutez quelque chose comme ceci à /etc/ufw/before.rules (et redémarrez ufw)

      # Votre masque de réseau / sous-réseau local pourrait ressembler à 10.1.1.0/24 ...

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

    • donnez à votre VM (s) une IP réservée dans la configuration DHCP principale de VMware ( facultatif, mais plus facile à utiliser si vous voulez le "trou" à partir de l'hôte ), en ajoutant quelque chose comme ça au bas de / 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; 
      }
      
    • Dites à VMWare de transférer les connexions de 22222 à guest: 22 en l'ajoutant à la section [entranttcp] de /etc/vmware/vmnet8/nat/nat.conf, puis redémarrez le (s) service (s) vmware (voir la remarque ci-dessous)

      [entranttcp]

      22222 = 192.168.198.10:22

    • Vous devrez peut-être également autoriser les connexions du port 22 dans votre invité, selon ce qu'il est / s'il possède un pare-feu propre. Dans ce cas d'invité OS X, c'était pour activer la "connexion à distance" via les paramètres de partage, sur linux, cela pourrait être via ufw comme sur l'hôte ci-dessus, etc.

Donc, une fois que tout est fait, vous pourriez être sur votre ordinateur portable ou une autre machine sur le réseau local, ssh vers votre station de travail (hôte vmware) sur 22222, et vous seriez éloigné de l'invité auquel vous lui avez dit de vous transmettre. Comme mentionné ci-dessus, si vous dites également vouloir pouvoir se connecter au serveur postgres sur l'invité (ou le serveur vnc, qui est souvent non chiffré), vous pouvez créer un tunnel dans la même commande (au lieu de l'ajouter également à la conf dhcp). Par exemple

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

et vous seriez connecté à l'invité via l'IP forward dans vmware, et pourriez pointer votre outil pgadmin3 vers localhost: 54320 (non privé) sur votre ordinateur portable, et votre trafic sur le réseau serait crypté. (Notez que «localhost» y est déjà transmis à l'invité)

Remarques

  • Il y a toutes sortes de façons de le faire. D'une part, vous pouvez simplement créer un tunnel pour héberger et spécifier l'IP de l'invité dans le -L et cela "éclaterait" et vous dirigerait là, mais l'option nat.conf est agréable et pratique, et vous n'avez pas besoin de le taper à chaque fois. Il existe également d'autres moyens de redirection de port
  • J'avais vu une référence à quelques threads d'un GUI de réseau virtuel pour faire cela (comme virtualbox l'a), mais je ne l'ai pas trouvé dans cette version
  • Je n'utilise pas de fenêtres, donc même si je suppose qu'il serait très similaire de configurer en tant qu'hôte, je ne suis pas sûr. Les configurations NAT devraient cependant fonctionner pour tout invité vmware (même si je n'ai utilisé aucune autre version de VMWare)
  • VMware définit un itinéraire pour que l'hôte puisse contacter directement l'invité NAT, IE depuis la console de l'hôte, je peux ping / ssh, etc. l'invité NAT 192.168.198.10 (défini ci-dessus) directement

    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
    
  • À partir d'une note Linux, il y a quelques bidouilles avec vmware avec systemd init pour démarrer correctement `automatiquement, et en plus de cela, j'ai trouvé que je ne peux pas simplement redémarrer vmware (vmci ne se charge pas à nouveau), et je dois redémarrer ma machine pour faire les choses NAT / DHCP ci-dessus, mais vous pourriez ne pas avoir le problème. Il existe cependant quelques threads avec des solutions systemd
élevage de chats
la source
Sonne bien, mais ufw ne semble pas être présent sur ma machine OS X 10.9.5. Est-ce quelque chose d'ancien OS X, mais qui utilise maintenant autre chose à la place?
Steve Jorgensen
Hé @SteveJorgensen, ufw est sous linux (mon hôte est linux, et l'invité était OS X dans cette réponse), mais c'est la même idée avec OS X comme hôte; autorisez l'accès à un port spécifique (dans le cas ci-dessus 22222) sur l'hôte avec l'outil approprié et dites à VMWare de faire la redirection vers l'invité. L'autre mention d'ufw était que tout ce que vous avez en tant qu'invité, il peut également avoir un pare-feu activé, vous devrez donc peut-être vous connecter à l'invité et autoriser l'accès au port vers
lequel vous redirigiez
Je n'ai pas OS X disponible pour le moment, mais je me souviens avoir utilisé ipfwà un moment donné. J'ai eu une recherche rapide pour vous et je n'ai pas vu beaucoup de messages utiles, mais cela mentionne pfctl, que je vois dans un autre post, semble remplacer le pfctl dans OS X 10.10. Je ne peux pas le tester désolé, mais j'espère que cela aide un peu
herdingofthecats
2

Pour simplifier les choses:

  1. Exécutez votre VM
  2. Dans le menu> Machine virtuelle> Adaptateur réseau> Ponté.
  3. Dans votre VM, trouvez votre adresse IP, comme dans linux: ifconfig.
  4. Depuis l'hôte, utilisez ssh ssh user@ip.

Je suppose que vous disposez d'un service SSH installé et en cours d'exécution.

zed
la source
1

Au lieu de connaître l'IP vers SSH, j'ai configuré Avahi sur mes invités Linux pour qu'il diffuse un nom d'hôte dynamique, consultez ma réponse ici: /superuser//a/710233/242604

J'espère que cela t'aides!

berto
la source
-1

Vous pouvez utiliser une interface réseau en pont facilitant la connexion à Internet et une connexion SSH simple.

Hieu
la source