-
Problème d'exécution SCP
Bonjour
je suis en train de développer un 2FA pour mes vm redhat
j'ai mis mon prog dans la partie "Match User xxxxx" du fichier sshd_config
en tant que forcecommand
dans mon programme j'utilise execl pour lancer soit
- le shell par défaut du user
- soit la commande présente dans le SSH_ORIGINAL_COMMAND
le souci que j'ai c'est lorsque je lance un SCP la SSH_ORIGINAL_COMMAND est "scp -t /chemin/fichier"
donc je l’exécute via execl mais cela reste figé comme en attente d'info supplémentaire
la commande exact est execl('/bin/bash',bash','-c','scp -t /chemin/fichier',nil)
je suppose que dans le cas du SCP il doit y avoir une autre façon de faire
mais la quelle ?
-
Vérifie d'abord ta commande scp. A première vue, elle n'est pas bonne : scp exige que tu lui donnes l'endroit où tu veux que le fichier soit copié : quand c'est un dossier distant c'est de la forme utilisateur@adresse_serveur:/chemin/dossier. Tu ne lui dit pas où la copier, donc il attend l'information.
Teste là d'une VM à l'autre directement via un shell.
De plus je ne connais pas l'option -t. Il existe une option -T
-
L'option -t de scp est une option non documenté mais utilisé par la parti serveur pour savoir s'il fonctionne en mode 'to' ou en mode 'from' ( pour celui-ci, l'option est -f au lieu de -t )
En gros, en tant que client, on lance un scp pour un transfert sur machine distante et sur cette machine, un scp sera lancée soit avec l'option -t soit avec l'option -f selon le sens du transfert.
-
Bonjour
en effet je n’étais pas assez précis désolé
donc je pars d'une machine A en lançant un
Code:
scp fichier user@B:/tmp/fichier
côté machine B le ssh reçois la commande
Code:
scp -t /tmp/fichier
comme indiqué par disedorgue l'option -t n'est pas documenté mais elle indique a scp qu'il va recevoir un fichier a placer dans /tmp/fichier
vu que sur la machine B pour mon utilisateur user je force une commande dans le sshd_config pour faire du 2fa si la session est interactive
si non je passe la commande transmise par la variable d'environnement SSH_ORIGINAL_COMMAND à execl
mais cela attend indéfiniment
il doit y avoir une option a passer a execl en plus pour faire du scp cote machine B