Transférer un file du server distant A vers le server distant B du server C

J'ai un problème intéressant que j'essaie de résoudre. J'ai un server JumpBox que j'ai pour sécuriser ssh dans les servers du client. C'est le seul server sur lequel mes clients ont ouvert le port 22. Cependant, ce server JumpBox est très petit et n'a pas assez d'espace pour contenir de gros files (plus grand que 5 Go).

Donc, j'ai configuré un autre server avec des disques plus grands à cet effet, mais je ne veux pas que les clients aient à ouvrir le port 22 à une autre adresse IP.

Serveur T = Transferbox

Serveur J = Jumpbox

Serveur C = Clientbox

Du server J, puis-je transférer un file sur le server T vers le server C?

Merci et laissez-moi savoir si je dois clarifier tout

Malheureusement, Scp ne supporte actuellement pas ce problème. Mais vous pouvez utiliser sshfs sur J, monter T et C, puis copyr (en utilisant cp) sur J du sharepoint assembly T au sharepoint assembly C.

Si vous combinez autofs et sshfs de la façon dont / net (avec un automount-map exécutable) vous permet d'get une solution automatique fonctionnelle.

J'ai vu une solution sshfs pour CentOS utilisant un fusible quelque part.

À partir de "T", vous devez ouvrir un tunnel ssh sur "J" qui se dirige vers SSH sur "C". De là, vous pouvez passer par J de T pour faire n'importe quoi sur C via SSH. Voir SSH Tunneling Made Easy pour plus d'informations

Ainsi, à partir de votre server "T", vous pouvez faire quelque chose comme ceci:

 ssh -f J-user@addr-of-J-server -L 2000:addr-of-C-server:22 -N ssh C-user@localhost -p 2000 

Sur l'hôte où vous avez besoin de données, ouvrez simplement le port, indiquez 22222 pour les connections tcp de l'hôte qui enverra des données.

sur datatables de réception de l'hôte, vous pouvez utiliser quelque chose comme

 $ nc -l -p 22222 | tar xf - 

et sur l'hôte en envoyant datatables une fois l'auditeur ci-dessus est en place

 $ tar cf - files directories | nc -w1 ip.of.host.listning 2222 

une fois que datatables sont transférées, fermez simplement le trou du pare-feu; Si vous craignez d'oublier de fermer, vous pouvez l'ouvrir pour dire 30 minutes avec quelque chose comme

 # (iptables -I INPUT -p tcp -s ip.of.host.sending.data --dport 22222 -j ACCEPT; sleep 30m;iptables -D INPUT -p tcp -s ip.of.host.sending.data --dport 22222 -j ACCEPT) & 

Si vous craignez que quelqu'un snooping vos données; vous pouvez utiliser cryptcat plutôt que netcat (nc).

Pourquoi ne pas utiliser les utilitaires split, tar ou zip pour rassembler vos files en petits morceaux, puis transférer chaque pièce individuellement par J. Lorsque toutes les pièces sont en C, développez simplement l'archive tar / zip.

Votre autre option serait de créer un VPN de quelque sorte entre T et J. Vous pouvez ensuite essayer de créer un file partager / exporter de T, car il s'agit d'un système de files local (NFS, FUSE, etc.).

Les autres options sont d'avoir vos clients SSH dans J et de mettre en place un tunnel (-L, -R), puis de J leur permettre de se connecter à T. Ainsi, ils créent un tunnel C-> J-> T et sur T dispose d'un système de transfert de files (FTP, HTTP). Le tunneling SSH enverra les packages au besoin.

Votre meilleure solution sera d'get plus de ressources sur votre JumpBox. Si vos clients vous donnent de l'argent, vous devriez en investir dans une infrastructure adéquate, de sorte que vous ne devez pas perdre du time à passer à travers les cercles.

Une note historique, c'est précisément le type de situation sur laquelle le mode passif du protocole FTP a été créé. Cependant, étant donné que les informations du count sont envoyées en clair, il est beaucoup less susceptible d'être utilisé.

La manière la plus simple ici est de monter le lecteur du server T sur jumpbox en utilisant nfs ou sshfs: http://fuse.sourceforge.net/sshfs.html Je ne sais pas si vous souhaitez conserver les permissions, mais je crois que vous pouvez même monter le dossier sshfs sur les users s'identifier.