Je voudrais copier squid.conf
d'un serveur à un autre.
- Les serveurs ne se parlent pas. Je voudrais passer par mon poste de travail.
- Les deux serveurs ont le fichier, il sera donc écrasé sur la cible.
- Les fichiers sont
600
autorisés et appartiennent à root. - la connexion root via ssh est désactivée (
PermitRootLogin no
). - J'aimerais le faire en une seule ligne, si possible, car il fera partie d'un guide de configuration.
Je sais faire
ssh source 'tar czpf - -C /etc/squid/ squid.conf' | \
ssh target 'tar xzpf - -C /etc/squid/'
pour copier des fichiers entre les serveurs et conserver les autorisations. Cependant, dans ce cas, j'obtiendrai "Autorisation refusée".
Je sais aussi que je peux faire ça:
ssh -t source 'sudo cat /etc/squid/squid.conf'
De cette façon, -t
sudo peut demander le mot de passe administrateur avant de sortir le contenu du fichier.
Le problème est que je ne sais pas comment combiner ces techniques en quelque chose qui demandera le mot de passe sudo sur chaque serveur et transférera le fichier vers sa destination. Est-ce possible?
MISE À JOUR : Voici le meilleur que j'ai pu trouver:
ssh -t source 'sudo tar czf /tmp/squid.tgz -C /etc/squid squid.conf' && \
ssh source 'cat /tmp/squid.tgz' | \
ssh target 'cat >/tmp/squid.tgz' && \
ssh -t source 'sudo rm /tmp/squid.tgz' && \
ssh -t target \
'sudo tar xzf /tmp/squid.tgz -C /etc/squid && sudo rm /tmp/squid.tgz'
Appeler cela un one-liner semble un étirement. Je pense que je vais le décomposer en étapes distinctes dans le guide de configuration.