1 votes

Transférer un répertoire par ssh avec sudo

J'essaie de transférer un répertoire d'un serveur distant (CentOS) vers ma machine locale (Ubuntu) par ssh. Il y a deux utilisateurs : A et B. L'utilisateur A peut se connecter au serveur distant par ssh et a un accès sudo. L'utilisateur B possède un répertoire sur le serveur distant.

Pour transférer un répertoire appartenant à l'utilisateur B en tant qu'utilisateur A, il faut utiliser sudo.

Voici ce que j'utilise actuellement pour transférer un fichier (de distant à local) :

ssh -tt userA@remote_host 'stty raw -echo; sudo cat /path/to/remote/file/owned/by/userB' > /path/to/local/file

Pour transférer un répertoire, j'ai essayé l'approche tar,

ssh -tt userA@remote_host 'stty raw -echo; sudo tar -C /path/to/remote/directory/owned/by/userB/ -czf - .' | tar -C /path/lo/local/directory -xzf -

Cependant, sur le système local, j'obtiens cette erreur :

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Qu'est-ce que je fais de mal ?

0voto

Tentative de transfert de répertoire par ssh

ssh -tt userA@remote_host 'stty raw -echo; sudo tar -C /path/to/remote/directory/owned/by/userB/ -czf - .' | tar -C /path/lo/local/directory -xzf -

En envoyant la sortie de la commande ci-dessus à cat (dans le système local) au lieu de tar, on obtient plus d'informations :

$ ssh -tt userA@remote_host 'stty raw -echo; sudo tar -C /path/to/remote/directory/owned/by/userB/ -czf - .' | cat
userA@remote_host's password: 
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
Connection to remote_host closed.

Pour corriger cela, j'ai utilisé cette commande :

ssh -t userA@remote_host 'stty raw -echo; sudo tar -C /path/to/remote/directory/owned/by/userB/ -cf - . | gzip -9nf' | tar -C  /path/lo/local/directory -xzf -

Note pour les options ssh

Puisque j'utilise sudo pour accéder au répertoire de l'utilisateur B, ssh renvoie à sudo: sorry, you must have a tty to run sudo si -t n'est pas utilisée.

-t : Forcer l'allocation des pseudo-terminaux

Note pour les options de stty

Le site stty option -echo est facultatif. Il doit être utilisé (je pense) si sudo vous demande de saisir un mot de passe.

raw : Traiter l'entrée telle qu'elle est (ne pas interpréter les caractères spéciaux, etc.)

-echo : Ne pas imprimer les caractères tapés

Note pour les options gzip

-9 : Régler la compression au maximum

-f : Force de compression ( Comme le suggère l'erreur )

-n , --no-name : Ne comprend pas le nom et l'horodatage du fichier (utile pour comparer les sommes de contrôle du fichier dans le distant et le local).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X