Forum général.général Tunnel SSH à travers Proxy 8080 avec user pass

Posté par  .
Étiquettes : aucune
0
13
juin
2005
Bonjour.

Je voudrais établir un tunnel SSH depuis mon école.

Évidement, cette dernière utilise un proxy, port 8080 avec un nom d'utilisateur et un mot de passe.

Quels outils puis-je me servir pour faire ça ?

J'ai bien trouver quelques trucs, mais à chaque fois, je me chope une erreur 403 car il ne prend pas l'user / pass...

Merci bien :)
  • # Plus d'infos ?

    Posté par  . Évalué à 2.

    Bonjour,

    Il faudrait un peu plus d'infos, en particulier concernant les outils que tu as testés, pour éviter te t'envoyer sur des pistes que tu as déjà explorées.

    Quoi qu'il en soit, pour passer un proxy http, je ne connais que httptunel (avec le couple hts/htc pour le serveur et le client). J'ai testé avec un proxy squid (sans authentification) et ça semble fonctionner correctement. Les options --proxy-authorization (-A) ou --proxy-authorization-file permettent de spécifier un user/mot de passe pour le proxy, mais je n'ai jamais eu à les utiliser.

    Dans un autre domaine, si les paquets ICMP sortent de ton réseau scolaire (ping), tu peux essayer de regarder du côté de ptunel : http://www.cs.uit.no/~daniels/PingTunnel/index.html(...) .

    JJD
    • [^] # Re: Plus d'infos ?

      Posté par  . Évalué à 1.

      J'ai essayé http://www.taiyo.co.jp/~gotoh/ssh/connect.html,(...) en mode debug, ça me retourne ceci :
      GenTux-Laptop .ssh # connect -d -H :8080  22
      DEBUG: (none)
      DEBUG: relay_method = HTTP (3)
      DEBUG: relay_host=
      DEBUG: relay_port=8080
      DEBUG: relay_user=root
      DEBUG: local_type=stdio
      DEBUG: dest_host=
      DEBUG: dest_port=22
      DEBUG: Program is $Revision: 1.93 $
      DEBUG: resolving host by name: 
      DEBUG: resolved:  (X.X.X.X)
      DEBUG: not matched, addr to be SOCKSified: X.X.X.X
      DEBUG: connecting to :8080
      DEBUG: begin_http_relay()
      DEBUG: >>> "CONNECT :22 HTTP/1.0\r\n"
      DEBUG: >>> "\r\n"
      DEBUG: <<< "HTTP/1.0 403 Forbidden\r\n"
      DEBUG: http proxy is not allowed.
      FATAL: failed to begin relaying via HTTP.
      ceci, mais je ne sais pas cmt mettre un user/pass. Je viens d'essayer ceci : http://www.agroman.net/corkscrew/(...) Mais
      ssh -C -o 'ProxyCommand=/usr/local/bin/corkscrew  8080 %h %p /home/thymus/.ssh/myauth'  22
      Proxy could not open connnection to :  Forbidden
      ssh_exchange_identification: Connection closed by remote host
      Je ne sais pas si j'utilise bien le dernier. En fait, pt que ce proxy n'utorise pas ce que je vx faire... Merci :)
      • [^] # Re: Plus d'infos ?

        Posté par  . Évalué à 1.

        arf, dsl, le post précédent n'est pas bon, il n'a pas affiché <PROXY> et <HOTE>

        Je recommence :

        GenTux-Laptop .ssh # connect -d -H <PROXY>:8080 <HOTE> 22
        DEBUG: (none)
        DEBUG: relay_method = HTTP (3)
        DEBUG: relay_host=<PROXY>
        DEBUG: relay_port=8080
        DEBUG: relay_user=root
        DEBUG: local_type=stdio
        DEBUG: dest_host=<HOTE>
        DEBUG: dest_port=22
        DEBUG: Program is $Revision: 1.93 $
        DEBUG: resolving host by name: <HOTE>
        DEBUG: resolved: <HOTE> (X.X.X.X)
        DEBUG: not matched, addr to be SOCKSified: X.X.X.X
        DEBUG: connecting to <PROXY>:8080
        DEBUG: begin_http_relay()
        DEBUG: >>> "CONNECT <HOTE>:22 HTTP/1.0\r\n"
        DEBUG: >>> "\r\n"
        DEBUG: <<< "HTTP/1.0 403 Forbidden\r\n"
        DEBUG: http proxy is not allowed.
        FATAL: failed to begin relaying via HTTP.

        et

        ssh -C -o 'ProxyCommand=/usr/local/bin/corkscrew <PROXY> 8080 %h %p /home/thymus/.ssh/myauth' <HOTE> 22
        Proxy could not open connnection to <HOTE> : Forbidden
        ssh_exchange_identification: Connection closed by remote host

        Merci
        • [^] # Re: Plus d'infos ?

          Posté par  . Évalué à 1.

          Je pense pas que le proxy autorise les connexions sur les ports autres que 80 et 443. Tu peux essayer de faire en sorte que le serveur ssh écoute aussi sur le port 443 (suffit d'ajouter "Port 443" dans la conf de sshd).
          • [^] # Re: Plus d'infos ?

            Posté par  . Évalué à 1.

            Le port 8080 est le port proxy. Je le sais bien car là, j'ai le net en utilisant ce proxy avec le port 8080. :)
            • [^] # Re: Plus d'infos ?

              Posté par  . Évalué à 1.

              Je te parle du port du serveur ssh que tu souhaites joindre à travers le proxy. Ce serveur tourne sur le port 22 (vue la commande "tonhost 22" que tu tapes).
              Tu en connais beaucoup des serveurs web sur le port 22 ?
              L'administrateur du proxy non plus, c'est pour cela qu'il ne t'autorise sûrement qu'à contacter des serveurs sur les port 443 et 80.

              Proxy could not open connnection to HOTE : Forbidden

              Tu dois donc faire en sorte que le serveur ssh écoute sur un de ces deux ports.
              • [^] # Re: Plus d'infos ?

                Posté par  . Évalué à 1.

                Interessant cette remarque...

                J'avais mal compris en effet :]

                Je vais essayer ça, merci :)
            • [^] # Re: Plus d'infos ?

              Posté par  . Évalué à 2.

              On est bien d'accord que le port 8080 est le port d'écoute du proxy. En revanche, ce proxy ne relaie certainement pas vers n'importe quel port sur les serveurs externes : l'accès sur les ports 80 (HTTP)et 443 (HTTPS) est certainement (forcément) autorisé. Il y a des chances que d'autres ports (comme le 8080) soient également ouverts. Par contre, il serait étonant que des ports comme le 22 (ssh) soient ouverts.

              De plus, même en faisant écouter le serveur SSH sur un autre port (80, 443, 8080 ou tout autre port que le proxu accepte de relayer), il y a, à mon avis, peu de chance que cela fonctionne correctement car le proxy ne va relayer que des requêtes HTTP.

              Je te conseille donc effectivement l'utilisation de httptunnel : il faut lancer la partie serveur (hts) sur ta machine perso et exécuter le client (htc) sur le poste à ton école en spécifiant les bons paramètres (en particulier le port à utiliser). Le couple htc/hts va encapsuler ton flux SSH dans des requêtes HTTP et tu devrais pouvoir passer le proxy.

              En résumé : tu lances hts sur ton serveur SSH en lui disant de se mettre à l'écoute en HTTP sur le port XXXX et de router vers le port 22 en local. Tu lances htc sur la machine cliente en précisant le port d'écoute local YYYY, le proxy HTTP avec son authentification et l'adresse IP/port du serveur hts. Pour établir la connexion SSH, sur la machine cliente tu lances "ssh -l user -p YYYY localhost" (connexion ssh vers la machine locale sur le port YYYY où htc est à l'écoute. htc encapsule les trames TCP dans des requêtes HTTP et les envoie au serveur hts sur le port XXXX via le proxy. hts extraie les trames TCP du flux HTTP et les redirige vers le port 22 du serveur SSH) : c'est (beaucoup ?) plus lent qu'une connexion directe, mais "chez moi ça marche".

              JJD
              • [^] # Re: Plus d'infos ?

                Posté par  . Évalué à 2.

                De plus, même en faisant écouter le serveur SSH sur un autre port (80, 443, 8080 ou tout autre port que le proxu accepte de relayer), il y a, à mon avis, peu de chance que cela fonctionne correctement car le proxy ne va relayer que des requêtes HTTP.

                Le https, c'est du http dans du ssl, le proxy ne remonte alors pas au niveau http.
                Lorsqu'on se connecte à un site https, le proxy ne fait que relai en fait, sans regarder le trafic.

                Ensuite, il faut que ton client sache envoyer son trafic au proxy http, mais il n'y a besoin de rien côté serveur, je peux t'en assurer :)
                Et ça évite une couche HTTP de trop entre le proxy et le serveur.
                • [^] # Re: Plus d'infos ?

                  Posté par  . Évalué à 2.

                  Il s'agit d'ailleurs de la méthode CONNECT,

                  cf :
                  * des bouts de conf de squid :

                  # On rejette tous les ports différents de ceux déclarer dans les acl
                  http_access deny !Safe_ports
                  http_access deny CONNECT !SSL_ports


                  * ou la rfc 2817 :
                  http://www.faqs.org/rfcs/rfc2817.html(...)

                  5.2 Requesting a Tunnel with CONNECT

                  A CONNECT method requests that a proxy establish a tunnel connection
                  on its behalf. The Request-URI portion of the Request-Line is always
                  an 'authority' as defined by URI Generic Syntax [2], which is to say
                  the host name and port number destination of the requested connection
                  separated by a colon:

                  CONNECT server.example.com:80 HTTP/1.1
                  Host: server.example.com:80
              • [^] # Re: Plus d'infos ?

                Posté par  . Évalué à 1.

                Oui, mais avec httptunnel, si je veux faire une connexion ftp par exemple, ou encore irc ?

                Ca marchera aussi ?
  • # T'as essayé de demander l'ouverture du port ?

    Posté par  . Évalué à 2.

    Une connection SSH vers l'extérieur peut avoir tout un tas de justification légitime (et ce sont peut etre meme vraiment tes raisons) dans le cadre scolaire : récupérer des TP que tu as fait chez toi, utiliser un serveur CVS accessible via SSH, des étudiants étrangers qui peuvent se connecter a leur école d'origine...

    Voila, un petit mail au service info de ton école qui détaille tes raisons (vraies ou imaginaires) et ils le feront peut-etre. Après rien ne t'empeche de te retourner vers des bidouilles obscures si ils sont vraiment bornés et paranoiaques.

    Je veux pas faire la morale (je pense deja avoir mis en place un ou deux tunnels tordus), mais c'est tellement mieux de faire les choses de façon normale.

    mes 2 c

Suivre le flux des commentaires

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