SFTP sur double saut de serveur

15

J'essaie de trouver une méthode pour me permettre d'accéder aux fichiers sur un serveur SFTP auquel je ne peux pas accéder depuis ma machine locale. Actuellement, je dois SSH vers un serveur distant (c'est dans un certain bloc IP que le serveur SFTP final acceptera), puis de là SFTP vers le serveur de destination. De là, j'ai getles fichiers qui m'intéressent, les déposant ainsi sur le serveur intermédiaire, d'où je peux récupérer les fichiers soit sur un partage Samba, soit directement scp. Je travaille également à l'inverse, où je dépose les fichiers sur l'intermédiaire, SSH vers celui-ci puis SFTP vers la destination et putles place dans les dossiers appropriés.

Mon objectif est de raccourcir cela. Les restrictions malheureuses sont que ma machine est Windows (j'utilise KiTTy et / ou Cygwin) et je ne peux en aucun cas modifier le serveur intermédiaire (ou le serveur de destination). Je suis prêt à utiliser des programmes en ligne de commande ou GUI tant qu'il fonctionne et est gratuit.

Des idées?

josh.trow
la source

Réponses:

24

En substance, sans l'interface graphique ou d'autres commodités:

ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination

Vous pouvez définir cette valeur par défaut en modifiant le fichier de configuration, par défaut ~ / .ssh / config

Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p

Cela vous permet ensuite de faire

ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/

Bien sûr, avec ce genre de magie, vous pouvez facilement

mkdir -pv /tmp/mydest3tmp          # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/  # mount :)

Sur Windows, vous utiliseriez WinSCP qui est fourni avec (je pense IIRC) PLINK (de Putty suite). Je suppose que l'emplacement par défaut du configfichier ssh est différent (il faudrait que je le recherche sur Google), mais je suis sûr que cela fonctionne plus ou moins de la même manière.

Notez que la seule chose dont vous avez besoin pour que cela fonctionne est «netcat ( nc)» sur le serveur intermédiaire (premier saut). C'est un outil omniprésent sur linux / UNIX [1]; Il est assez facile de créer une version liée statiquement qui devrait fonctionner si vous pouvez la copier en premier lieu.

[1] notez qu'il existe des saveurs, il est donc possible que l'option -w doive être supprimée / orthographiée différemment

sehe
la source
1
Vous monsieur, vous ne savez pas à quel point cela me rend heureux :) Parfait!
josh.trow
@ josh.trow: Non, mais je suis content que vous me dit :) En tout temps
sehe
Bien que, comme l'a déjà constaté @ josh.trow, WinSCP dispose d'une fonction de tunneling intégrée (voir l'autre réponse), si vous devez réellement utiliser la configuration du tunnel par une application externe, voici un guide: winscp.net/eng/docs/ guide_tunnel
Martin Prikryl
9

Je ne vais pas définir cela comme la réponse acceptée car je ne l'aurais jamais trouvée sans @sehe et @Jakub, mais voici ce que j'ai trouvé qui simplifie tout ...

WinSCP a la possibilité d'utiliser un tunnel SSH intégré. Je ne sais pas quand cette fonctionnalité est arrivée, mais je ne l'ai jamais remarquée auparavant.

Paramètres du tunnel WinSCP

josh.trow
la source
Documentation de la fonction de tunneling: winscp.net/eng/docs/tunneling et winscp.net/eng/docs/ui_login_tunnel
Martin Prikryl
fonctionne aussi dans filezilla!
Hayden Thring
cette fonctionnalité ne permet qu'un seul tunnel ... comment ajouter un 2ème tunnel?
zeetit
@zeetit Ensuite, vous devez utiliser un tunnel externe. Toutes les options de tunneling sont documentées dans le guide WinSCP sur le tunneling .
Martin Prikryl
2

Une de mes suggestions serait de créer un proxy de chaussettes en utilisant du mastic (à partir de votre boîte Windows), puis de proxy sur votre client SFTP dessus (par exemple Filezilla sftp).

Vous n'auriez pas besoin de faire quoi que ce soit de spécial de cette façon, activez simplement votre proxy putty socks5, activez filezilla et transférez vos fichiers vers le serveur de destination.

(you ==socks5 proxy==> middle server) ==> destination server
Jakub
la source
Il semble que vous résolviez un problème différent, plus difficile vraiment. Le problème de l'OP est que la destination finale n'est pas routable depuis le client - le trafic SSH sortant est correct. ( Je crois que votre solution est nécessaire pour «tunneler» le trafic SSH sur un proxy? )
Voir le
@sehe .. quoi? Vous configurez un proxy SSH socks 5 (tunnel ssh vers la boîte du milieu) puis vous procurez simplement votre trafic SFTP vers la boîte de destination, en vous faisant passer pour le serveur du milieu. Quel autre problème est-ce que je résous?
Jakub