-
Multi tunneling SSH
Bonjour,
J'essaie en vain de faire du SSH multi tunnel avec redirection de port.
Je dois récupérer des fichiers sur un serveur unix (que j'appelerai serveur 3) via mon poste local (sous windows que j'appelerai workstation) et entre les deux se trouve deux autres serveurs par lesquels je dois obligatoirement passer en m'identifiant (appelé serveur 2 et 3).
J'ai donc:
Workstation => serveur1 => serveur 2 => serveur 3
Les données à rapatrier sur workstation se trouvant sur le serveur 3.
J'ai réussi à faire un tunnel ssh avec forwarding de port dans la configuration suivante :
Workstation => serveur1 => serveur 2
Mais je ne trouve pas la solution pour aller jusqu'au serveur 3. J'utilise des .bat qui lance le logiciel plink qui monte donc le tunnel et envoi la commande scp pour récupérer les données. Cependant impossible de trouver comment faire du multi tunneling jusqu'au server 3. Le peu de sujet sur internet sont souvent peu claire :(
Quelqu'un s'y connait et peut m'aider?
Cordialement,
Tino
-
Bonjour,
Personne pour m'éclairer ?
Cordialement,
Tino
-
Je pense qu'il te faut commencer par la fin :
tu fais un tunnel du serveur 1 (port x) en te connectant sur le serveur 2 avec redirection sur le 3 (port y)
puis un tunnel de ton poste vers le serveur 1 avec redirection sur le port x
?
-
Bonjour,
Aurais-tu un exemple de syntaxe de commande concernant la technique que tu as donné?
Je n'ai pas réussi pour l'instant :cry:
Merci par avance :zoubi:
Tino
-
Bonjour,
Dans le cas du
Workstation => serveur1 => serveur 2
Je lance un .bat sur la workstation avec d'une part :
Plink.exe -batch -ssh -P 22 -l monlogin -pw monpassword -N -L 5555:@srv2:22 @srv1
Puis je fais un scp :
winscp407.exe /console /command "option batch continue" "option confirm off" "option echo off" "open scp://monlogin:monlogin@127.0.0.1:5555" "get /un_fichier"
Ce fonctionnement est OK mais je n'ai pas réussi à le compléter pour aller jusqu'au serveur 3 :?
Le but serait de lancer un .bat qui va chercher un fichier sur le serveur 3.
Merci pour le temps qui m'est consacré :ccool:
Cordialement,
Tino
-
En relisant ta question et ton exemple, je me suis rendu compte que je me suis fourvoyé ! La solution est toute simple, pas besoin de se prendre la tête comme je le faisais (et qui n'aurait pas marché de toute façon... :))
Actuellement, tu ouvres un tunnel entre ton port 5555 et le port 22 de srv2, tu as donc accès à srv2 :
Code:
Plink.exe -batch -ssh -P 22 -l monlogin -pw monpassword -N -L 5555:@srv2:22 @srv1
Il suffit alors d'ouvrir un nouveau tunnel entre un autre port local (5556 par exemple), et le port 22 de srv3 puisque tu y as accès grâce à srv2 :
Code:
Plink.exe -batch -ssh -P 5555 -l monlogin2 -pw monpassword2 -N -L 5556:@srv3:22 localhost
(ici, on met localhost puisqu'on se connecte à srv2 par le port 5555 ouvert précédemment...)
Ton scp devrait marcher :
Code:
winscp407.exe /console /command "option batch continue" "option confirm off" "option echo off" "open scp://monlogin:monlogin@127.0.0.1:5556" "get /un_fichier"
-
- Hello,
- J'ai bien modifié mes scripts comme indiqué mais une erreur apparait :
- The server's host key is not cached in the registry. You
- have no guarantee that the server is the computer you
- think it is.
- The server's type_de_cryptage key fingerprint is:
- Type nb_debits la_clé_de_cryptage
- Connection abandoned.
- Appuyez sur une touche pour continuer...
- Il y a une déclaration de serveur à faire dans un fichier ou un truc du genre ?
- Bonne journée,
- Tino
Ok, donc si j'enlève l'option -batch dans le deuxième plink.exe l'option me demandant si je veux sauvegarder le serveur dans le registre apparait.
Reste à voir pourquoi le fichier est pas rapatrié, une fenêtre s'ouvre et se referme très rapidement sans que j'ai le temps de lire ce qui y est affiché :?
-
Ca fonctionne :lol:
J'avais juste encore un soucis d'arborescence par rapport au fichier que je voulais récupérer :aie:
Par contre je dois avouer avoir du mal à comprendre dans les détails comment tout ça fonctionne :oops: J'ai essayé de me faire un schéma avec les différents serveurs et la workstation ainsi que les ports et les flux mais j'ai du mal :roll: Si jamais quelqu'un a la motivation de schématiser ce qui se passe :mrgreen:
Mille merci en tout cas :ccool:
Tino
-
Pas trop le temps de faire un dessin (peut-être plus tard), je tente de réexpliquer :
1) Tu ouvres un tunnel entre le port 5555 de ton propre PC vers le port 22 du serveur 2 (en utilisant une connexion SSH entre ton propre PC et le serveur 1 qui a accès au serveur 2).
Code:
Plink.exe -batch -ssh -P 22 -l monlogin -pw monpassword -N -L 5555:@srv2:22 @srv1
-batch -ssh > facultatif ? : aucune idée de ce que ça fait et pas cherché à comprendre ;) sans doute pour dire que c'est dans un batch (pas d'interaction ?) et que tu te connectes en ssh...
-P 22 > facultatif: indique le port de connexion
-l monlogin > indique le login à utiliser sur le serveur 1
-pw monpassword > indique le password à utiliser sur le serveur 1
-N > facultatif : n'ouvre pas de shell
-L 5555:@srv2:22 > créé un tunnel entre ton port Local 5555 (-L comme Local) et le port 22 du serveur srv2
@srv1 > adresse du serveur sur lequel tu te connectes
2) Grâce à ce tunnel, le port 5555 de ton propre PC "devient" le port 22 du serveur 2. Ainsi, en te connectant au port 5555 de ton PC, c'est comme si tu te connectais au port 22 du serveur 2.
Code:
Plink.exe -batch -ssh -P 5555 -l monlogin2 -pw monpassword2 -N -L 5556:@srv3:22 localhost
-batch -ssh > idem
-P 5555 > nécessaire cette fois-ci : comme on utilise le tunnel, il faut se connecter au port 5555 de ton propre PC, tu indiques ici le port et plus loin ton propre PC (par le mot localhost)
-l monlogin2 > indique le login à utiliser sur le serveur 2
-pw monpassword2 > indique le password à utiliser sur le serveur 2
-N > facultatif : n'ouvre pas de shell
-L 5556:@srv3:22 > créé un tunnel entre ton port Local 5556 (-L comme Local) et le port 22 du serveur srv3 (il faut utiliser un numéro différent de 5555 puisque ce port est déjà utilisé par ta première connexion, d'où 5556)
localhost > adresse du serveur sur lequel tu te connectes, ici, localhost = ton propre PC car tu te connectes par le tunnel (et tu indiques donc l'entrée du tunnel, soit le port 5555 de ton PC)
Tu as donc maintenant un tunnel ouvert entre le port 5556 de ton PC et le port 22 du serveur srv3, et le port 5556 de ton propre PC "devient" le port 22 du serveur 3 : tu peux donc utiliser winscp :
Code:
winscp407.exe /console /command "option batch continue" "option confirm off" "option echo off" "open scp://monlogin:monlogin@127.0.0.1:5556" "get /un_fichier"
open scp://monlogin:monlogin@127.0.0.1:5556 > ouvre la connexion en utilisant l'adresse 127.0.0.1 (soit localhost) et le port 5556 ce qui redirige la connexion vers le port 22 du serveur srv 3