J'ai besoin de copier un fichier entre des machines Linux. Le problème que l'utilisateur que j'utilise pour me connecter ( myuser
) est différent de celui qui peut accéder au fichier.
Si je viens ssh
à la machine, je peux changer d'utilisateur en utilisant sudo su someuser
, puis-je le faire d'une manière ou d'une autre scp
?
En utilisant WinSCP, j'ai réussi à le faire, en configurant le SCP / Shell, donc je pense qu'il doit y avoir une manière similaire de le faire via le shell pur.
ssh
et d'exécuterscp
quelque chose comme cecissh myuser@host "sudo scp ..."
:?Réponses:
En supposant que l'utilisateur auquel vous pouvez envoyer ssh n'a pas besoin d'un mot de passe pour sudo su dans l'utilisateur cible, vous pouvez essayer ceci:
... Attention, je ne suis toujours pas convaincu que la simple configuration
targetuser
pour n'autoriser scp / sftp / rsync que sur SSH et l'utilisation d'une paire de clés RSA pour l'authentification ne soit pas une bien meilleure option.la source
tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"
pour un tas de fichiers-z
ou-j
sont utiles en fonction de la vitesse de connexion et le matériel informatique de chaque côté ...Si vous connaissez les informations d'identification de l'autre utilisateur (
someuser
), vous pouvez simplement le spécifier lors de votrescp
appel.Depuis la
man scp
page:Voici la syntaxe utilisée:
Exemple
Vous souhaitez copier le fichier
/home/foo/bar
depuishost1
votre hôte local, en utilisant l'utilisateursomeuser
, voici la commande:Une authentification vous sera demandée (mot de passe, clés, ...).
la source
C'est probablement possible , mais je dirais que c'est une façon très maladroite de s'y prendre.
Ma première suggestion est de vous connecter en tant qu'utilisateur. Même si vous n'avez pas le mot de passe de cet utilisateur, vous pouvez ajouter votre propre clé publique ssh à leurs clés autorisées puis scp en utilisant leur clé, comme le montre rahmu.
Si ce n'est pas possible, ma deuxième suggestion est de se connecter par ssh, sudo à l'utilisateur et de créer un fichier tar des fichiers que vous souhaitez copier et de le placer quelque part que votre propre utilisateur peut lire. Ensuite, faites défiler ce fichier tar.
la source
utiliser
-S
sur lascp
commandepar exemple /superuser/87597/how-to-perform-scp-as-a-sudo-user
cela vous permettra d'exécuter un script, un peu comme je pense que vous faisiez avec le cas d'utilisation de winscp.
la source
J'ai essayé de donner quelques exemples dans l'article suivant. L'idée de base n'est pas d'utiliser scp, mais d'utiliser dd et ssh avec le commutateur utilisateur sudo. Regardez:
http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-another-user
la source