Accès SSH sur une VM sur un ordinateur distant

Fermé
cocoshop - Modifié le 10 mars 2022 à 16:22
mamiemando Messages postés 33075 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 11 mars 2022 à 17:56
Bonjour,
Je veux me connecter via ssh sur une VM installée sur un PC distant. Le PC et la VM distants sont sous Linux avec Ubuntu 18. Mon PC est sous windows 10.

J'ai essayé de mettre la connexion par pont pour avoir une adresse IP de la VM mais cela ne marche pas. J'ai une adresse de type 10.0.2.XX. En essayant de me connecter j'ai le message "port 22 : connection time out." La connexion ssh est bien activée des deux côtés. J'ai fait une redirection de port de l'hote (2201) vers la VM (22) avec l'IP 10.0.2.X pour la VM et 193.XX.XXX.XX pour l'hôte. Toujours le même message d'erreur.

Si vous connaissez la solution, merci de m'éclairer.
A voir également:

6 réponses

avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
10 mars 2022 à 18:46
Bonjour,

1) Confirmes-tu que l'hôte est bien en 193.XX.XXX.XX et non en 192.168.x.x ?
2) As-tu vérifié si le service SSH est bien démarré sur la VM ?
3) L'hôte peut-il "ping" la VM ?
4) L'hôte peut-il accéder au serveur SSH de la VM ?
5) Quelle est la configuration du réseau virtuel des VM ? Type NAT ou type routé ?
6) Lorsque tu mets le mode bridge, qu'est-ce qui ne marche pas ? La VM n'obtient pas d'adresse IP ? L'administrateur du réseau auquel l'hôte est connecté permet-il l'ajout d'autres machines par cette méthode ?
0
mamiemando Messages postés 33075 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
Modifié le 10 mars 2022 à 19:00
Bonjour,

Méthode 1 : accès NAT

Tu peux essayer de configurer ta VM pour avoir un accès NAT de sorte à avoir une IP dans le même réseau que la machine hôte. Dès lors tu devrais pouvoir te connecter à l'IP de ta VM, sur le port 22.

Méthode 2 : accès par pont

Si tu préfères faire un accès par pont, il faut effectivement rediriger au niveau de l'Ubuntu hôte un port (disons 2222 si ton Ubuntu hôte a un serveur ssh qui écoute déjà sur le port 22, et rediriger avec iptables le port 2222 vers le port 22 de ta VM). Il est important que l'Ubuntu hôte puisse router la VM (vérifie la table de routage de ta VM et de ton Ubuntu hôte avec
ip route
). Il faut évidemment que le service ssh soit lancé sur ta VM (sur ta VM, contrôle avec
netstat -ntlp
que ta VM écoute bien sur le port 22)

Méthode 3 : proxy ssh

Tu peux utiliser ton Ubuntu hôte comme proxy ssh. Il faut pour cela configurer ton client ssh (sur ta machine Windows) pour définir la connexion ssh vers ton Ubuntu VM en précisant que tu passes par l'Ubuntu hôte en tant que proxy.

En admettant qu'on veuille se connecter à login_target@host_target (ta VM Ubuntu) via login_proxy@host_proxy (ton Ubuntu hôte) on configurerait ainsi (sous Linux :
~/.ssh/config
) :

# Connection toward login_target@host_target via the ssh proxy login_proxy@host_proxy
Host host_target
IdentityFile /home/toto/.ssh/id_rsa
ForwardAgent yes
User login_target
HostName host_target
ProxyCommand ssh -e none login_proxy@host_proxy exec nc %h %p


Ici :
  • host_target
    doit être remplacé par l'IP ou le FQDN de la VM qui doit être routable depuis le proxy ;
  • login_target
    doit être remplacé par le login utilisé pour te connecté à
    host_target
    ;
  • host_proxy
    doit être remplacé par l'IP ou le FQDN de la VM qui doit être routable depuis le proxy ;
  • login_proxy
    doit être remplacé par le login utilisé pour te connecté à
    host_target
    ;
  • le chemin
    /home/toto/.ssh/id_rsa
    doit être remplacé par le chemin vers la clé privée que tu auras préalable créé e.g. avec
    ssh-keygen -t rsa -b 2048
    . Il faut ensuite installée la clé publique
    /home/toto/.ssh/id_rsa.pub
    sur
    host_proxy
    et
    host_target
    à l'aide de
    ssh-copy-id
    . Cette commande revientà concaténer la clé publique
    /home/toto/.ssh/id_rsa.pub
    à la suite du fichier
    ~login_proxy/.ssh/authorized_keys
    sur
    host_proxy
    (au besoin, le créer) et même principe pour la machine cible.


Ceci fait, au niveau du client il suffit alors de lancer :

ssh-agent
ssh host_target


et tu devrais être directement connecté sur la machine cible. La commande
ssh-agent
permet de transférer ton identité SSH à travers le proxy et t'évite d'avoir à copier ta clé privée sur d'autres machines. En effet, ta clé privée ne devrait jamais être copiée ailleurs, et rester uniquement sur ta machine cliente.

Une fois la clé ssh installée, tu peux finir de sécuriser tes serveurs ssh pour n'autoriser plus que les authentification par clé (et plus par mot de passe).

Bonne chance
0
Oui c'est bien en 193.XXX, c'est le serveur d'une école, mais apparemment il n'y a pas de pare-feu ou autre qui pourrait bloquer.
Oui le service SSH est bien démarrer.
L'hôte ne peut pas accéder au ssh non plus, et le ping je sais pas je pourrai voir demain mais ça m'étonnerai.
Le réseau est en NAT, j'ai essayé de créer un chemin avec les ports en changeant un peu tout mais ça ne change rien. J'ai passer le port de l'hôte en 2201 et la VM en 22 (je ne suis pas expert, dsl si c'est pas exact les termes). Et rediriger de l'hôte vers la VM.
Quand je met en pont, le réseau ne marche pas, je n'ai pas de connexion sur la VM et donc pas d'IP "classique".
Je ne sais pas si l'administrateur permet ça mais un informaticien de l'école est venu et ça n'avait pas l'air d'être un soucis.
PS : J'avais vu sur un forum de passer par une ip virtuel de l'hôte style 10.0.2.2, pour ensuite passer sur l'ip de la VM 10.0.2.15, mais ça ne fonctionne toujours pas. Le message d'erreur est port 22 : time out
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
10 mars 2022 à 19:21
Donc l'hôte (le serveur) possède bien une IP routable publiquement, tu peux accéder à 193.x.x.x depuis chez toi ?

Le réseau virtuel est en NAT et, dans le cas où l'administrateur du réseau auquel l'hôte est connecté ne prévoit pas l'apparition d'autres machines sur son réseau, c'est la "bonne" façon de faire.

Dans le cas d'un NAT (virtuel ou pas, qu'importe), il faut effectivement mettre en place une redirection de port depuis l'IP externe vers l'IP locale.

Ta configuration réseau est à priori correcte, tu devrais pouvoir accéder au SSH de la VM en utilisant la cible 193.x.x.x:2201 à condition qu'aucun pare-feu interfère, autant côté distant que local.

> L'hôte ne peut pas accéder au ssh non plus

C'est probablement la cause du problème. L'hôte devrait être capable d'établir la connexion SSH vers 10.0.2.x (port 22).
Vérifie le pare-feu de l'hôte et celui de la machine virtuelle.
Par curiosité, essaie aussi un "ssh localhost" depuis la machine virtuelle.
0
mamiemando Messages postés 33075 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
Modifié le 11 mars 2022 à 17:59
Bonjour,

Si tu veux qu'on t'aide, il faut clarifier la situation.

Indique-nous :
  • la table de routage au niveau de tes deux Ubuntu : reporte-nous le résultat de
    ip route
    .
  • l'IP de tes deux Ubuntu quitte à les remplacer par une valeur arbitraire ce sont des IP publiques :
    ip addr
    .
  • si tu parviens, sous Windows à te connecter en ssh à la machine Ubuntu hôte (proxy).
  • si tu parviens Ubuntu hôte (proxy) à te connecter en ssh à la machine Ubuntu VM.
  • si les serveurs ssh des deux machines Ubuntu sont lancés et écoutent bien sur le port 22 (reporte-nous le résultat de
    netstat -ntlp
    ).


Vu les symptômes que tu décris, la manière dont est configuré le réseau au niveau de ton logiciel de virtualisation t'empêche d'avoir un accès à ta VM. As-tu essayé en mode NAT ?

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je suis effectivement en NAT depuis le début comme décrit dans ma problématique, la méthode proxy est intéressante et j'essaierai surement dans un second temps. J'aimerai explorer la méthode NAT jusqu'au bout. Peut être est-ce simplement la requête de port que j'ai mal effectuée, est-il possible de me mettre un exemple de redirection de port qui fonctionnerai ?
Sinon, après avoir tester la connexion SSH depuis l'ordinateur hôte, elle ne fonctionne pas non plus, avec comme réponse :
connexion refusée, ou
ssh_exchange_identification: read: connexion reset by peer

Bon, en attendant je me suis connecté en viewer à distance ça dépanne, mais si j'ai besoin de me connecté sans que la session hote soit active, ça me dépannerai bien :)
0
mamiemando Messages postés 33075 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
Modifié le 11 mars 2022 à 18:00
Bonjour,

Si tu veux que je puisse t'aider, il faut que tu répondes aux questions que je t'ai posées dans le message #5. Sinon, je ne peux pas te dire pourquoi tu as ton message d'erreur, car plusieurs explications sont possibles parmi lesquelles :
  • le routage est incorrect/incomplet au niveau d'une ou des deux Ubuntus ;
  • le service ssh mal lancé ;
  • le pare feu bloque au niveau d'une ou des deux Ubuntus ;
  • le serveur ssh rejette la connexion car le login ou la méthode d'authentification ;
  • ...


Bonne chance
0