Forum Linux.debian/ubuntu Connexion SSH sans routage

Posté par  (site web personnel) .
Étiquettes : aucune
0
23
fév.
2007
Mon titre est assez peu explicite mais je n'en ai pas trouvé de plus pertinent... J'expose donc mon problème en détails.

J'administre un serveur (appelons-le machine A) dans mon école, celui-ci a une connexion Internet. Il n'y a pas de routage au sein du réseau local et il est donc impossible de contacter cette machine A depuis l'extérieur. Cependant, pour des facilités d'administration, j'aimerais pouvoir effectuer des modifications sur cette machine A sans devoir me rendre sur place, une console par SSH ça serait parfait.

Si un client mis en place sur cette machine A et qu'il contacte un serveur mis en place sur une machine B, une connexion serait établie entre les 2 machines et on pourrait donc envoyer des données de la machine B vers la machine A. C'est un peu tordu mais c'est la seule solution que j'ai trouvé pour contourner le problème...

Existe-t-il un logiciel basé sur ce principe (ou autre chose qui pourrait résoudre mon problème) ?

Merci.
  • # un tunel ssh

    Posté par  . Évalué à 2.

    si tu as accès de l'ordi A à un autre ordi sur internet (B), tu peux faire :
    ssh -R 22:localhost:22 user@pi_B

    ensuite, tu n'as qu'a te connecter à B
    ssh userdeA@ipB et tu tu retrouve automatiquement sur A
    • [^] # Re: un tunel ssh

      Posté par  . Évalué à 4.

      Tout ça est presque bon...

      En fait, l'ouverture des ports en dessous de 1024 est soumis à restriction (seul le superuser peut le faire).

      De plus, sur le serveur B, le port 22 est déjà utilisé (par le serveur SSH sur lequel tu te connectes). Dans la commande de tunnel SSH, il faut donc utiliser un numéro de port différent (et supérieur à 1024).

      Par exemple :
      sur A on exécute :
      ssh -R 2222:localhost:22 userdeB@B

      Si on veut juste créer le tunnel, sans ouvrir de session sur B, on peut même exécuter ssh avec les bonnes options :
      ssh -N -n -R 2222:localhost:22 userdeB@B
      [On peut alors fermer le tunnel avec Ctrl-C. On peut aussi utiliser l'option -f, pour mettre le process ssh en arrière plan, mais il faudra alors fermer le tunnel avec un kill]

      Pour se connecter sur A depuis une machine ayant accès à B (ou depuis B lui même), on exécute :
      ssh -p2222 userdeA@B

      Pour tout cela, il n'est pas nécessaire d'avoir les droits root sur aucune des deux machines impliquées (à condition que le port -forwarding ne soit pas interdit).

      A+
      JJD
      • [^] # Re: un tunel ssh

        Posté par  . Évalué à 2.

        merci pour ce complément. Pour le port > à 1024, je le savais, mais je voulais faire court (je sais féniant), pour les options -N -n en revanche, je ne connaissais pas et je vais aller voir ça parce que ça m'intéresse (ça doit marcher aussi je pense avec ssh -L)
        ssh et les tunnels, c'est vraiment quelque chose de fabuleux.
      • [^] # Re: un tunel ssh

        Posté par  (site web personnel) . Évalué à 1.

        Effectivement, je viens d'expérimenter le problème du port 22 occupé par le serveur SSH. Ca marche impeccablement maintenant, merci beaucoup à vous 2 !
    • [^] # Re: un tunel ssh

      Posté par  (site web personnel) . Évalué à 1.

      Imaginons que sur mon serveur situé à l'école et inaccessible de l'extérieur, j'ouvre une connexion SSH vers un serveur B, possédant une adresse IP fixe (afin d'éviter les coupures de connexion dues au changement d'adresse IP avec une DNS dynamique). Je lance donc ceci sur le serveur A : ssh -R 20000:localhost:20 monserveurB

      Si je me connecte en SSH sur mon serveur B, je peux me connecter au tunnel en faisant : ssh localhost -p 20000

      Cependant, depuis mon poste de travail à la maison, impossible de me connecter à monserveurB sur le port 20000, on dirait que ssh n'écoute que localement et le tunnel est donc inaccessible de l'extérieur... Quelqu'un a-t-il une solution à ce problème ?
      • [^] # Re: un tunel ssh

        Posté par  . Évalué à 1.

        Lorsque tu fais du port forwarding avec "-R 20000:localhost:22", le port 20000 n'est ouvert que sur l'interface de loopback : le tunnel ne fonctionne donc, comme tu l'as constaté, qu'en local.

        Pour rendre le tunnel disponible depuis des machines externes, il faut utiliser la syntaxe "-R :20000:localhost:22" (note les deux points :) ou "-R <adresse IP serveur>;20000:localhost:22".

        Il faut également que sur le serveur, l'option "GatewayPorts" soit activée dans sshd_config (ce qui n'est pas le cas, en général, dans les configurations par défaut).
        • [^] # Re: un tunel ssh

          Posté par  (site web personnel) . Évalué à 1.

          On dirait que ça fonctionne même sans donner de partie "bind address" dans l'argument de l'option -R... Apparemment c'est l'option GatewayPorts qu'il me manquait. Merci pour l'info !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.