Comment copier un fichier à l'aide de pscp à l'aide d'un serveur de passerelle intermédiaire hop

J'ai une boîte de saut linux entre moi et un serveur distant. J'ai vu quelques messages sur la façon de le faire avec le scp (par exemple ici ), mais je suis sur une boîte Windows, donc la situation est légèrement différente. Je souhaite copier un fichier de ma machine Windows local, via une configuration de serveur comme passerelle entre les deux. Je devrais pouvoir faire un multi-hop à travers le serveur intermédiaire. Donc, quelque chose comme ça:

A -> B -> C

Je ne veux pas copier le fichier sur B, puis me connecter à B et copier le fichier à nouveau. J'aimerais pouvoir exécuter pscp sur plusieurs fichiers pour les copier.

J'ai trouvé que la meilleure façon de le faire est d'établir d'abord un tunnel sur le serveur intermédiaire (serveur B dans l'illustration). Ensuite, pscp sur ce lien. Je vais parcourir exactement ce que j'ai fait.

1) Créer une connexion SSH à serverB dans PuTTY

Entrez la description de l'image ici

2) Pour cette connexion, créez un tunnel qui passe du port 2222 (vous pouvez en choisir un autre si vous le souhaitez) au serveurC au port 22

Entrez la description de l'image ici

3) Ouvrez une fenêtre de commande dans Windows. Accédez à où PuTTY / pscp est installé sur votre machine (si ce n'est déjà sur le chemin)

4) Entrez la commande suivante (en remplaçant vos valeurs par celles de {}):

C: \ putty> pscp -P 2222 -pw {myPasswordOnRemoteMachine} c: \ dev \ fileIWantToCopy.txt {myusername} @ 127.0.0.1: / tmp

5) Sur la machine distanteC, le fichier doit se trouver dans le répertoire / tmp

La solution la plus simple que j'ai trouvée à ce problème, était de ne pas utiliser pscp du tout. Utilisez simplement WinSCP pour copier le fichier.

  1. Entrez votre adresse serveur finale (c.-à-d. Serveur 'C' dans la question) dans la page de session et sélectionnez SCP. Entrez la description de l'image ici

  2. Cliquez sur 'Avancé …'. Accédez à Connexion> Tunnel. Entrez vos informations de serveur de sauts ici (c'est-à-dire Server 'B'). Entrez la description de l'image ici

  3. Maintenant, connectez-vous avec votre fichier clé ou votre mot de passe et vous serez accolé.

Ma situation encore plus compliquée: A -> B -> C -> D -> E

I used PuTTY and FileZilla A my Windows machine, B and C are gateways (very limited functionality) D is the first Linux Machine and E is the target Linux Machine I use PuTTY to: ssh into B (w/username password) (IP of B is predefined in PuTTY) then ssh into C (w/username password) then manually ssh into D (w/username password) then manually ssh into E (at least this uses pubic key login so no uid/password!) Once this is setup I then add tunnel to the IP of the final machine E in PuTTY thus: L7777 172.123.124.125:22 OK now fire up FileZilla: File > SiteManager: Setup new connection to: Host: 127.0.0.1 Port: 7777 Protocol SFTP Ask for password... Connect!