Forum Astuces.divers [Web/Réseau] Connection ssh simplifiée à travers un tunnel

Posté par  .
Étiquettes : aucune
0
10
nov.
2007
Vous êtes sur une machine (disons troy) et vous voulez vous connecter à une machine distante (disons ithaque) qui est sur un réseau privé, en faisant un tunnel à travers une passerelle (disons odyssee).
Vous effectuez donc la commande suivante:


ssh -L [port local]:[IP d'ithaque]:[port ssh d'odyssee] odyssee


où [port local] est un port supérieur à 1024, à moins que vous ne soyez root, et [port ssh d'odyssee] est le plus souvent 22.



Ceci est une méthode classique et bien connue,
Pour vous connecter à Ithaque il vous faut ensuite taper:


ssh -p [port local] -l [utilisateur d'ithaque] localhost


Mais avoir à se rappeler du port, de l'utilisateur et les écrire à chaque fois est fatiguant, et c'est là le coeur de cette astuce.
Éditez le fichier /etc/hosts (sur troy) de telle sorte à avoir une ligne semblable à celle là:


127.0.0.1 localhost ithaque


Et ajoutez dans votre .ssh/config (sur troy) une ligne semblable à celle là:


Host ithaque
  User [utilisateur d'ithaque]
  Port [port local]


Il vous suffit maintenant d'entrer la commande suivante pour vous connecter à ithaque:


ssh ithaque
  • # petites rectifications et plus si affinités

    Posté par  . Évalué à 2.

    La syntaxe exacte pour un tunnel ssh dans le cas présent est la suivante :

    ssh -L [port local]:[ip ithaque]:[port ssh ithaque] odyssee

    Reprenons tout cela avec trois machines A, B et C. On veut un connexion ssh entre A et C en passant par B. Le serveur ssh de C ecoutant sur le port 2222 On fera alors
    ssh -L 1111:C:2222 B
    puis
    ssh -p 1111 localhost

    La connexion entre A et B se faisant par le port 22, celle entre B et C par le port 2222.

    Deuxième remarque, modifier /etc/hosts n'est pas vraiement la solution à ce problème. Quitte à utiliser .ssh/config, autant le faire jusqu'au bout :

    Host ithaque
    User [utilisateur d'ithaque]
    HostName localhost <-- ici on dit que ithaque est en realité localhost
    Port [port local] <-- celui qu'on a ouvert avec ssh -L
    ..... (facultatif : HostKeyAlias, etc....)


    Ainsi un "ssh ithaque" se connectera à localhost par le bon port.

    Mieux encore, on peut éviter de créer un port local et directement arriver sur ithaque en utilisant l'option ProxyCommand de ssh et netcat :

    Host ithaque
    User [utilisateur ithaque]
    Hostname ithaque <--- ou IP ithaque
    Port [Port ssh ithaque]
    ProxyCommand ssh -p [port ssh odyssee] odyssee nc %h %p


    ssh ithaque se connectera à odyssee qui redirigera le flux vers ithaque grâce à netcat
    (ces solutions marchent, mais je n'ai pas vérifié leurs syntaxes, il se peut donc qu'il y ait quelques erreurs. Pour les corrections et plus de détails : man ssh_config)

Suivre le flux des commentaires

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