Nous avons deux principaux environnements en question:
Développement et assurance qualité
Chaque environnement possède deux serveurs:
- Boîte de saut
- Serveur d'application
Pour vous connecter au serveur d'applications, vous devez d'abord vous connecter au boîtier de connexion, puis SSH au serveur d'applications.
Il y a quelques règles en place grâce au pare-feu:
- Vous DEVEZ vous connecter au serveur d'applications via la boîte de saut
- Le serveur d'applications ne peut pas se connecter aux boîtes de saut
- Les boîtiers de connexion sont sur le même sous-réseau et PEUVENT se parler.
Notre problème
Nous avons beaucoup de contenu (670 Go) sur le DEVELOPMENT APPLICATION SERVER
, et nous devons le faire parvenir au QA APPLICATION SERVER
.
La copie de ces données dans les boîtes de saut n'est pas une option car elles manquent d'espace requis.
J'ai fait quelques recherches et j'ai appris que nous pourrions potentiellement faire une série de tunnels via ces serveurs afin que nous puissions diffuser les données directement d'un serveur d'application à l'autre via les tunnels. Cependant, le problème que nous ne pouvons pas nous connecter à la boîte de saut à partir du serveur d'applications.
Avons-nous des options? Cela devient une situation désespérée, et le temps presse. Nous n'avons pas le temps de télécharger les données et de les télécharger à nouveau. La copie sur le réseau sur les serveurs se fera rapidement, car il s'agit d'une connexion gigabit.
la source
Réponses:
De loin, le moyen le plus simple est de simplement le copier via scp. De plus, cette syntaxe fonctionne en fait contrairement à certaines des autres suggestions.
Vous ne pouvez pas battre cette syntaxe pour plus de facilité. Il vous permet de copier, rsync récursivement ou tout ce que vous voulez sans avoir à considérer des canaux potentiellement complexes. Cette syntaxe est intuitivement claire, sera plus facilement supportable par les administrateurs Sys qui vous suivent et ne font pas usage inutile de cat .
Depuis la page de manuel scp : les
-3
copies entre deux hôtes distants sont transférées via l'hôte local. Sans cette option, les données sont copiées directement entre les deux hôtes distants. Notez que cette option désactive le compteur de progression.Dans l'exemple ci-dessous
Voici un fichier ~ / .ssh / config qui configure l'accès direct de votre poste de travail aux serveurs d'applications via le saut approprié (aka bastion server).
Test de présence de fichier sur le serveur cible, il ne sera pas là.
Copions maintenant un fichier du serveur d'application Dev vers l'application QA via votre poste de travail.
Vérifions maintenant la présence du fichier copié sur le serveur d'application QA. Ce sera là cette fois.
Remarque
Lors de la fermeture d'une connexion ProxyCommand, vous verrez le message d'avertissement "Killed by signal 1". Il s'agit de SSH interrompant la connexion ProxyCommand et il n'y a rien à craindre. Vous pouvez vous en débarrasser en ajoutant
LogLevel Quiet
à votre strophe de configuration d'hôte bastion.la source
TUYAUX!
Si Internet est une série de tubes , Unix est une série de tuyaux - quelque chose comme:
devrait marcher.
Si vous devez traverser plus d'hôtes, ajoutez plus de canaux (et plus de couches imbriquées de
\
citation avec échappement) selon les besoins. (Notez cependant que si le pipeline / échappement devient si complexe que vous devez dessiner un diagramme ou recourir à compter sur vos doigts pour déterminer combien de fois vous devez doubler sur les évasions, il est probablement temps d'admettre la défaite et de configurer un VPN approprié !)la source
tar
around. (Vous pouvez aussi ne pas besoin de lacat
dans les étapes intermédiaires du pipeline -ssh
est heureux de manger stdin et relayer le.cat
Me fait me sentir mieux et est un espace réservé pour d' autres commandes utiles que vous pouvez utiliser, commetee
.)VPN! NOW!
sur eux ...user@host1
) aura à un moment donné lecat ginormous-file
stockage complet à tout moment? Ou les données sont-elles envoyées directement àuser@host2
? Ou est-il en quelque sorte diffusé? En quoi cela est-iltar
pertinent? Je suppose que cela concerne l'avant-dernière question que j'ai posée. Aucune de ces questions n'est rhétorique btw ...Si je comprends bien, vous avez deux serveurs de saut (jump-qa et jump-dev) protégeant deux serveurs d'application (app-qa et app-dev); les serveurs de saut peuvent ssh entre eux; aucune boîte autre que le serveur de saut correspondant ne peut ssh vers le serveur d'application correspondant. Les serveurs d'applications peuvent ssh à personne. Un fichier doit être transféré de app-dev vers app-qa. Les deux serveurs de saut manquent d'espace pour une copie provisoire des données.
Vous pouvez résoudre ce problème avec le tunneling ssh. Nous avons configuré une connexion à un serveur d'application distant, transportant un tunnel distant qui se connecte à nouveau à un port inutilisé sur son serveur de saut. Nous avons établi une deuxième connexion d'un serveur de saut à l'autre serveur de saut, transportant un tunnel qui récupère l'extrémité pendante du port transféré à distance depuis le tunnel un et l'envoie au port ssh de l'autre serveur d'applications.
Configurez les tunnels (chacune de ces commandes devra être exécutée dans une fenêtre distincte
jump-qa
):Vous devriez maintenant trouver que sur app-qa, vous pouvez faire
telnet localhost 2345
et obtenir la bannière ssh de app-dev. Vous pouvez ensuite copier le fichier de données:la source