Forum général.général SSH over SSH (ou comment "proxifier" SSH par et pour SSH)

Posté par  (site web personnel) .
Étiquettes : aucune
-1
17
juin
2011

Bonjour,

Je cherche le moyen de faire du SSH au travers de SSH. Jusque là rien de compliquer, je pourrais utiliser les méthode suivante :
ssh -t user1@serveurRebond ssh user2@serverDistant
Ou bien en utilisant la config avec nc.

Cependant, je voudrais savoir s'il n'y aurait pas une possibilité en faisant quelque chose du genre :
ssh -t -Dlocalhost:2222 user1@serveurRebond
puis
ssh -t -o 'ProxyCommand something localhost:2222' user2@serverDistant

Cela m'évitera d'avoir une connexion ssh sur le serveur de rebond par connexion à des serveurs distants (qui pourrait être résolu en utilisant le ControlMaster, mais je ne veux pas l'utiliser).

Merci de votre aide.

  • # Port forwarding

    Posté par  . Évalué à 1.

    Quelque chose comme :

    ssh -L 2222:serveurDistant:22 user1@serverRebond
    ssh -p 2222 user2@localhost
    

    La première commande crée sur la machine locale un processus qui écoute sur le port 2222 et qui renvoie toutes les connexions entrantes sur le port 22 de serveurDistant

    La seconde commande se connecte sur le port 2222 de la machine locale, et donc le port 22 du serveur distant en passant par le serveur de rebond

    • [^] # Re: Port forwarding

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

      Je suis d'accord quand tu n'as qu'un server distant, mais j'en ai une "trétrachiée", ça reviendrait à ouvrir un nouveau port pour chaque machine distante. Genre :

      ssh -L 2222:serveurDistant1:22 user1@serverRebond
      ssh -L 2223:serveurDistant2:22 user1@serverRebond
      ssh -L 2224:serveurDistant3:22 user1@serverRebond
      
      ssh -p 2222 user2@localhost
      ssh -p 2223 user3@localhost
      ssh -p 2224 user4@localhost
      

      Cela ne m'arrange pas. Mais merci quand même.

  • # Si ton SSH est assez récent

    Posté par  . Évalué à 2.

    Tu as l'option -W.

    DLFP >> PCInpact > Numerama >> LinuxFr.org

  • # Proxyfier la connexion SSH

    Posté par  . Évalué à 1.

    Salut,

    Il est effectivement possible de faire passer la connexion SSH via un proxy socks (en l'occurence, ce proxy est lui-même créé par une connexion SSH).
    Pour cela tu peux utiliser quelque chose comme proxy-connect. Normalement c'est dispo là http://www.meadowy.org/~gotoh/projects/connect mais le lien semble mort ; tu peux lire quelques explications là http://www.meadowy.org/~gotoh/ssh/openssh-socks.html ; sinon, il est possible que cela soit dispo dans ta distrib (paquet connect-proxy sous Debian/sid).

    Il suffit de déclarer ce proxy dans ton fichier ~/.ssh/config (ProxyCommand /usr/bin/connect-proxy -S localhost:2222 %h %p), éventuellement dans une section correspondant à tes machines cibles pour ensuite pouvoir te connecter de façon complètement transparente (tu peux, bien sûr, aussi spécifier le proxy sur la ligne de commande comme tu l'indiques dans ton post).

    Il existe certainement d'autres solutions, comme proxychains (http://proxychains.sourceforge.net ), mais je ne les ai pas expérimentées.

    A+
    JJD

    • [^] # Re: Proxyfier la connexion SSH

      Posté par  . Évalué à 3.

      Pour faire passer n'importe quoi via un proxy socks, il y a aussi tsocks.

      THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

      • [^] # Re: Proxyfier la connexion SSH

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

        Je confirme tsocks fonctionne. Juste la conf (/etc/tsocks.conf) à modifier et roule ma poule.

        ssh -Dlocalhost:3615 user@proxy
        tsocks ssh pipoUser@ailleurs
        

        Exemple de configuration :

        server = 127.0.0.1
        server_type = 5
        server_port = 3615 
        

        Gros merci.

  • # Belier

    Posté par  . Évalué à 2.

    Connais-tu Belier [http://www.ohmytux.com/belier/] qui est un outil permettant d'automatiser les rebonds SSH ?

    • [^] # Re: Belier

      Posté par  . Évalué à 1.

      Quel est l'apport de Belier par rapport à une config de .ssh/config ?

      Par exemple, pour gérer un parc de systèmes embarqués dans un réseau, j'ai ces entrées dans mon fichier de config :

      ## Machine de connexion (pont)
      Host domaine
          Hostname domaine.org
          User toto
          Port 8022
      
      ## Machine toto sur domaine à l'adresse 192.168.20.2
      Host toto.domaine
          ProxyCommand ssh domaine "tcpconnect 192.168.20.2 22"
          User foo
      

      ainsi, un simple ssh toto.domaine, et le rebond est transparent, permettant même un scp :

      scp ./file toto.domaine:/home/foo/
      

      Plus fort encore, sur ce parc, des machines sont simplement numérotées, et ont pour adresse IP locale : 192.168.20.101 pour la première, 192.168.20.102 pour la deuxième etc. Il suffit d'ajouter l'entrée suivante :

      Hostname *.domaine
          ProxyCommand ssh domaine "tcpconnect 192.168.20.$(( `basename %h .domaine` + 100 )) 22"
          User foo
      

      et ainsi, 1.domaine pointera sur la première machine, 2.domaine sur la seconde, etc. On peut même imaginer l'utilisation d'un DNS local si chaque machine a son propre nom.

      Avec l'utilisation d'une passphrase et d'un agent (ssh-agent, ssh-copy-id), cela permet d'éviter deux mots de passe par connexion, et permet son utilisation par des scripts tout en gardant une certaine sécurité. Il est même possible d'enlever le mot de passe sur les machines distantes pour ne garder que la connexion par agent, ce qui permet d'être protégé contre les attaque par dictionnaire. (utile s'il faut se connecter en root (oui, je sais, çaymal :) ))

Suivre le flux des commentaires

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