Essayer de SSH sur la machine virtuelle locale Ubuntu avec Putty

145

J'ai configuré une machine virtuelle du serveur Ubuntu, installé OpenSSH et j'essaie maintenant de me connecter à l'aide de Putty. Dans Putty, sous "Nom d'hôte", je mets "Ubuntu", étant donné que c'est ainsi que je pensais qu'il s'appelait lors de la configuration de la VM. Cependant, je viens de recevoir l'erreur: "Connexion expirée".

J'ai également essayé de mettre "127.0.0.1" dans le nom d'hôte dans Putty et juste d'obtenir "Connection Refused". Notez que j'ai effectué la redirection de port pour SSH et HTTP dans Oracle VM. Je ne sais donc pas comment le faire fonctionner.

fonds d'ordures
la source
FWIW ponté / hôte seulement ne fonctionnait pas pour moi, mais j'ai pu contourner le problème, en substance, seul SSH "sortant" (scp peut aller dans les deux sens, après tout), de sorte que je n'ai pas besoin d'un accès SSH dans l'invité.
rogerdpack

Réponses:

183

VirtualBox créera un réseau privé (10.0.2.x) qui sera connecté à votre réseau hôte via NAT . (Sauf configuration contraire.)

Cela signifie que vous ne pouvez accéder directement à aucun hôte du réseau privé à partir du réseau hôte. Pour ce faire, vous avez besoin d'un transfert de port. Dans les préférences réseau de votre machine virtuelle, vous pouvez par exemple configurer VirtualBox pour ouvrir le port 22 sur 127.0.1.1 (une adresse de bouclage de votre hôte) et transférer tout trafic sur le port 22 de 10.0.2.1 (l'adresse interne de votre machine virtuelle).

De cette façon, vous pouvez pointer putty sur le port 22 de 127.0.1.1 et VirtualBox redirigera cette connexion vers votre machine virtuelle où son démon ssh y répondra, vous permettant ainsi de vous connecter.

michas
la source
20
Merci, cela a fonctionné pour moi. De cygwin, je peux maintenant ssh [email protected]et je suis dans. Le panneau dont vous avez besoin est Paramètres-> Réseau-> Transfert de port, et le mien ressemble maintenant à l' adresse suivante
user7543
38
Cela ne fonctionnera PAS si ssh est déjà en cours d'exécution sur votre hôte car les ports se chevauchent. Redirigez le port 127.0.1.1:2222 vers 10.0.2.X: 22, puis exécutez 'ssh 127.0.1.1 -p 2222' depuis votre hôte '
dzlatkov
8
Assurez-vous également que openssh-server est installé sur le système d'exploitation client. sudo apt-get installe openssh-server
Illuminati
17
Je viens d'avoir ce problème moi-même - merci pour l'explication. J'ai essentiellement suivi ce que vous avez dit. Je suis allé à Paramètres et ma connexion a montré «NAT». J'ai cliqué sur l'option de «transfert de port» au bas de l'écran. Je lui ai donné le nom 'PuTTY-port-fwd', protocole TCP, hôte IP 127.0.0.1 hôte hôte 2222 invité IP 10.0.2.15 hôte invité 22. J'ai ensuite lancé PuTTY et l'ai configuré pour le port 127.0.022 2222 auquel il s'est connecté. mon OpenSUSE vm. Merci les gars, j'espère que cela aidera tout le monde à l'avenir ;-)
BubbleMonster
3
Cela a fonctionné pour moi, même si j'ai dû dire à VirtualBox d'ouvrir le port 2222 sur 127.0.0.1. Ensuite, j'ai pu me connecter en utilisantssh -p 2222 [email protected]
mchen.ja
44

Je voulais utiliser du mastic pour me connecter à mon ubuntu sur une boîte virtuelle (pour des raisons de confort, le VB est tout simplement bizarre. Je ne peux pas travailler si ce n'est sur un terminal approprié). En tous cas,

  1. Assurez-vous que le client ssh est installé sur votre Linux. Sinon, installez-le sudo apt install ssh.
  2. Éteignez le système d'exploitation.
  3. Maintenant sur votre VB aller à Settings -> Network ->le Adapter 1choisir Host-only adapter-> cliquez OK.
  4. Maintenant, démarrez votre système d'exploitation. exécuter ifconfig; maintenant l'adresse inet est votre adresse IP.
  5. Utilisez ceci et lancez-le sur votre mastic. Connectez-vous avec vos identifiants.

Le seul inconvénient de l'adaptateur pour hôte uniquement est que votre système d'exploitation invité n'a pas accès au réseau plus large (par exemple, Internet).

Si vous avez également besoin que votre machine virtuelle ait un accès Internet, laissez l'adaptateur 1 en tant que NAT et activez l'adaptateur 2, configuré en tant qu'adaptateur pour hôte uniquement. Cela permettra à votre machine virtuelle de se connecter à Internet à l'aide de NAT et d'établir une connexion locale avec votre hôte à l'aide de l'hôte uniquement.

Priya_user1907390
la source
4
"ponté" mettra l'ip sur votre interface locale et établira un pont pour l'accès à l'internet plus large
Duke
2
L’utilisation de deux interfaces, décrite ici, plutôt que pontée, présente l’avantage de ne pas dépendre du serveur DHCP local qui accepte vos demandes. La plupart des serveurs DHCP installés dans des lieux publics (aéroports, avions, hôtels et même la plupart des réseaux d'entreprise) n'offrent pas une deuxième adresse IP via le même adaptateur Wi-Fi. Par conséquent, une VM pontée ne fonctionnera pas dans cet environnement. Voici une très bonne étape par étape sur la façon de configurer cette configuration particulière: christophermaier.name/2010/09/01/…
Yves Dorfsman le
Travaillez comme un charme, mais vous devriez mettre l’adaptateur 2 sur la 3ème option pour que les gens laissent le NAT seul
user3502626
Merci beaucoup.
Luc
Merci beaucoup. mais quand je change le paramètre de réseau Ubuntu de NATen, host only adapteril ne peut plus se connecter à Internet, aucune solution?
Luc
19

Tout d'abord, vous devez décider si votre machine virtuelle est connectée à votre ordinateur hôte via une connexion en pont ou via un NAT, mais vous aurez également besoin de mettre l'adresse IP de la machine virtuelle en putty pour pouvoir se connecter à l'ip, dans le terminal de la machine virtuelle cette commande pour vous montrer l'adresse IP de la machine (et non 127.0.0.1 n'est pas l'adresse IP de la machine)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

dans ce cas, mon adresse IP sera le 10.0.2.15 au plus tard,

Essayez d’abord de vous assurer que vous pouvez communiquer à un niveau basique avec une machine virtuelle, ouvrez une fenêtre de terminal sur votre hôte et essayez d’envoyer une requête ping à la machine virtuelle.

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

Si vous obtenez un résultat, assurez-vous qu'un service ssh s'exécute sur la machine virtuelle, dans le terminal de votre machine virtuelle en tant que root,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

Ceci indique que nous avons un service / processus avec PID (2361) appelé sshd (démon OpenSSH) à l’écoute du port 22.

Vous pouvez tester si le service fonctionne correctement en essayant de le faire ssh à partir de la machine virtuelle,

VM # ssh 127.0.0.1

Ensuite, vous ne devez pas vous assurer que vous ne bloquez pas le port 22 de votre pare-feu / iptables, je ne peux pas le croire, mais vérifiez quand même. Dans la VM tapez cette commande pour vous montrer les iptables,

VM # iptables -nvL INPUT

dans la sortie, vous devriez avoir une ligne comme celle-ci:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW
Rabin
la source
Essayé cela, et apparemment mon adresse IP est 10.0.2.15. J'ai essayé d'entrer cela dans Putty et je viens de recevoir l' connection timed outerreur à nouveau. J'ai aussi essayé la nvLcommande que vous mentionnez, et obtenez une charge de (à défaut d'un meilleur mot) des trucs - Chain INPUT (policy accept......, chain FORWARD.....etc.
wickywills
Je réécris ma réponse avec quelques points supplémentaires que vous pouvez vérifier. Merci de me le faire savoir.
Rabin
2
Que faire si le ping 10.0.2.15 expire? J'utilise NAT.
Dan Dascalescu
La redirection de port était la réponse.
Dan Dascalescu
Pour plus de commodité: iptables -A INPUT -p tcp --dport ssh -j ACCEPTautorisera le trafic entrant si vous ne voyez pas tcp dans votre iptables.
Eric Hodgins le
15

Ma résolution était similaire à celle de Roman T. Cependant, je devais ajouter quelques étapes supplémentaires. Dans mon cas, la machine virtuelle Ubuntu Server 14 était exécutée sur un ordinateur Windows 8 dans un domaine Windows 2008. Si j'avais essayé NAT ou Bridge, je pouvais accéder à Internet mais je ne pouvais pas me connecter via SSH.

Si j'essayais Host Only Adapter, cela me permettrait d'utiliser SSH mais je ne pourrais pas accéder à Internet.

J'ai essayé la redirection de port aussi et sans joie. Ouvre Wireshark et il ne trouve tout simplement pas VM.

Ma solution a donc été d’ajouter une seconde carte réseau.

Méthode

Avec VM éteint

  1. Cliquez sur Paramètres> Réseau Cliquez sur Carte 1 et choisissez Carte pontée.
  2. Cliquez sur Adapter 2 et choisissez Host Only Adapter
  3. Cliquez sur Fichier> Préférences> Réseaux sous Réseaux NAT si vous ne voyez pas de réseau NAT, cliquez sur l'icône + pour ajouter un réseau NAT.
  4. Cliquez sur Réseaux réservés aux hôtes si vous ne voyez pas un réseau uniquement hôte, cliquez sur + icône pour en ajouter un.

Démarrer la VM

  1. Pour voir la carte réseau, vous devez taper

    ifconfig -a
    
  2. Vous pouvez voir que la carte réseau est ajoutée avec une adresse Mac mais pas une adresse IP?

  3. Si c'est le cas, vous devez modifier / etc / network / interfaces afin de configurer DHCP. Exemple ci-dessous avec VI / VIM mais vous pouvez utiliser l'éditeur de votre choix

    sudo vi /etc/network/interfaces
    
  4. ajouter les lignes

    auto eth1
    iface eth1 inet dhcp
    
  5. enregistrer et quitter le fichier.
  6. Ensuite, essayez de redémarrer le service réseau en utilisant la commande ci-dessous

    sudo service networking restart
    
  7. Ou si cela échoue, redémarrez VM.
  8. Une fois redémarré, tapez ci-dessous pour voir si votre adresse eth1 vous a été attribuée.

    ifconfig -a
    
  9. Si oui, voyez si vous pouvez SSH sur la VM
mrjamesmyers
la source
J'avais essayé votre solution, mais aucune adresse IP n'a été attribuée à une nouvelle interface. De plus, le DHCP est activé dans ma VBox.
Athlan
12

Les instructions suivantes ont fonctionné avec Ubuntu 14.04 et Oracle VirtualBox 4.3.30.

Faites ceci dans VirtualBox:

  1. Cliquez avec le bouton droit sur votre machine virtuelle, sélectionnez "Paramètres", puis "Réseau".

  2. En regard de "Connecté à", sélectionnez "Adaptateur pour hôte uniquement". Remarque: "Bridged Adapter" fonctionnera également. Consultez la documentation de VirtualBox pour plus de détails sur chaque option.

Faites ceci dans votre machine virtuelle:

  1. Trouvez votre adresse IP réseau en ouvrant un terminal et en tapant ifconfig. Observez l'adresse IP affichée à côté de eth0, sous "inet addr". Vous pouvez également voir votre adresse IP si vous cliquez sur l'icône Réseau dans le coin supérieur droit de votre bureau, puis sélectionnez "Informations de connexion".

  2. Installez openssh-server en tapant ce qui suit sur le terminal:

    sudo apt-get install openssh-server
    
  3. Juste au cas où, redémarrez la machine virtuelle.

Vous pouvez maintenant vous connecter à partir de PuTTY en utilisant l'adresse IP de l'étape 1 ci-dessus et le port 22.

Roman T
la source
2

Pour Ubuntu 18.04 et VirtualBox 5.2:

  1. Créer une interface réseau hôte

    je. Sur Virtualbox, cliquez sur File/ Host Network Manager.

    ii. Si vous ne possédez pas déjà de carte réseau hôte (par défaut vboxnet0), cliquez sur Create.

  2. Activer les paramètres d'adaptateur hôte uniquement pour la machine virtuelle

    je. Sur Virtualbox, cliquez avec le bouton droit sur votre machine virtuelle et sélectionnez Settings.

    ii. Cliquez Networket sélectionnez Adapter 2.

    iii. Cliquez sur Enable Network Adapter.

    iv. Sous Attached to:select Host-only Adapter. Le nom de l'adaptateur créé à l'étape 1 doit apparaître (par défaut vboxnet0).

  3. Configurer les paramètres réseau dans la VM

    je. Démarrez votre machine virtuelle et vérifier l'interface a été ajouté: ip a. Recherchez l'interface qui n'a pas d' inetadresse. Sur la mienne, c'était enp0s8.

    ii. Modifier /etc/netplan/01-netcfg.yaml. par exemple sudo vi /etc/netplan/01-netcfg.yaml.

    iii. Sous les paramètres de l'adaptateur d'origine, ajoutez des détails de configuration:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    Cela attribue une adresse IP statique à votre machine virtuelle pour plus de commodité pour SSH. Si vous souhaitez dhcpgérer l'adressage à la place, laissez de côté l'adresse et la configuration de la passerelle et définissez-les dhcp4sur yes.

    iv. Recharger le fichier de configuration: sudo netplan apply.

  4. SSH dans votre VM

    je. Si vous ne l' avez pas installé sshdans la machine virtuelle: sudo apt install ssh.

    ii. A partir de votre machine hôte, SSH dans la machine virtuelle: ssh <username>@192.168.56.2.

ooknosi
la source
Merci, sauvé ma journée!
anber