SCP Permission Denied : Qu'est-ce qui le cause ? Comment le résoudre ?

Découvrez comment résoudre l'erreur "permission denied" lors de l'utilisation de SCP pour transférer des fichiers sur SSH en explorant les causes et solutions pratiques.
SCP est un utilitaire de transfert de fichiers SSH ouvert que vous pouvez utiliser sur Linux et d'autres systèmes d'exploitation pris en charge pour transférer des fichiers via SSH. Il peut être utilisé pour transférer des fichiers entre deux hôtes via une connexion SSH.
L'erreur ‘permission denied’ de SCP peut survenir pour diverses raisons, telles que des chemins spécifiés incorrectement ou une erreur de permission d'écriture. Nous allons explorer certaines des raisons pour lesquelles cette erreur se produit et comment la résoudre.
Cause : Pas de permissions d'écriture
Une raison pour laquelle cette erreur se produit est que votre utilisateur n'a pas les permissions d'écriture pour le répertoire spécifique sur l'hôte où vous essayez d'écrire des fichiers. Pour vérifier ces permissions, vous pouvez utiliser la commande ‘ls -l’, qui affichera les permissions d'écriture.
Recherchez un ‘w’ dans les quatre premiers caractères de la première colonne de la sortie. Si vous en voyez un, cela signifie que votre utilisateur a la permission d'écriture pour ce répertoire. Alternativement, vous pouvez toujours créer un fichier en utilisant la commande touch dans ce répertoire. Si vous ne recevez aucune erreur, comme ‘permission denied’, alors cela signifie que votre utilisateur a les permissions d'écriture.
Exemple :
Disons que vous souhaitez copier un fichier sur un hôte distant en utilisant SCP, et que vous recevez une erreur de permission refusée à cause de permissions d'écriture.
scp abcd.txt user@127.0.0.1:/home/abcduser/abcd.txt
Solution 1 : Utiliser le compte root pour transférer des fichiers
Pour corriger une telle erreur, vous devez accorder des permissions d'écriture à votre utilisateur pour ce répertoire. Pour cela, vous avez besoin de privilèges root ou sudo. Une autre chose que vous pouvez faire est de copier le fichier dans un répertoire où votre utilisateur a des permissions d'écriture.
Dans une telle situation, vous devez soit autoriser votre utilisateur actuel à avoir des permissions d'écriture sur /home/abcduser, soit utiliser le compte utilisateur root pour copier ce fichier.
Pour permettre au compte root de copier un fichier en utilisant scp, vous devez autoriser la connexion root sur ssh, ce qui n'est pas recommandé pour des raisons de sécurité, mais vous pouvez le faire dans ce genre de scénarios et le désactiver ensuite.
Pour cela, ouvrez le config openssh à /etc/ssh/sshd_config et décommentez PermitRootLogin dans un éditeur de texte sur l'hôte distant.
Ensuite, connectez-vous à l'hôte distant en utilisant son compte root.
Ensuite, exécutez la commande comme ceci :
scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt
Ou simplement ceci fonctionnera
scp abcd.txt 127.0.0.1:/abcduser/abcd.txt
Les deux sont équivalents.
Solution 2 : Ajouter votre utilisateur au groupe de permissions d'écriture :
Pour qu'un utilisateur puisse écrire dans un répertoire/fichier sous Linux, vous devez soit ajouter un utilisateur au groupe qui possède le répertoire ou le fichier, soit faire en sorte que le fichier soit détenu par cet utilisateur.
Dans notre exemple, nous exécutons ls -l sur le répertoire /home/ sur le système distant pour voir quel groupe possède /home/abcd.
La commande ls -l vous donnera une sortie, où le contenu de la 4ème colonne est le groupe qui possède le répertoire/fichier correspondant.
Dans notre exemple, c'est le groupe abcduser qui possède le répertoire /home/abcduser, donc nous pouvons
Simplement exécuter cette commande sur le système distant.
sudo groupadd user abcd
C'est le ‘groupe abcd’ dont nous voulons que notre utilisateur fasse partie, et l'utilisateur dont nous voulons changer le groupe est ‘user’.
Exécutez à nouveau la commande ls -l et si vous voyez un ‘w’ à la 6ème place de la sortie dans la première colonne, alors cela signifie que le groupe a des permissions d'écriture sur ce répertoire.
Ensuite, réexécutez la commande, qui dans notre cas serait :
scp abcd.txt user@somepc:/home/abcduser/abcd.txt
Solution 3 : Utiliser l'utilisateur qui possède ce répertoire pour copier le fichier
La solution la plus simple est d'utiliser l'utilisateur qui possède ce répertoire pour copier le fichier dedans.
Simplement exécuter ls -l sur le répertoire. Dans notre cas, cela serait :
ls -l /home/
La sortie de la troisième colonne sera l'utilisateur qui possède ce répertoire correspondant au nom du répertoire qui vous intéresse. Dans notre cas, c'est abcduser qui possède le répertoire /home/abcduser comme vu dans la capture d'écran ci-dessus.
Ensuite, utilisez ce compte particulier lors de la copie du fichier en utilisant scp vers l'hôte distant.
la commande est la suivante :
scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt
Cause 2 : Ne pas avoir de clé privée pour cet utilisateur de l'hôte distant
Vous pourriez rencontrer une erreur indiquant que l'accès scp est refusé lorsque vous essayez de transférer des fichiers entre des hôtes.
C'est un problème d'authentification SSH, et la raison en est que vous n'avez pas ajouté de clé privée à scp lors de son exécution.
Exemple :
scp somefile user@127.0.0.1:/home/user/somefile.txt
Solution :
Une solution simple consiste à exécuter la commande scp avec l'option -i, ajoutant ainsi la clé privée de l'utilisateur avec lequel vous souhaitez vous connecter à l'hôte distant et transférer des fichiers.
Vous devez vous assurer que vous avez la clé privée pour cet utilisateur et si ce n'est pas le cas, vous devez la générer sur la machine distante, puis faire utiliser cette clé par l'utilitaire scp avec l'option -i.
Dans notre cas, la solution serait :
scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt
Où key.pem est le fichier de clé privée pour l'utilisateur ‘user’.
Note : Nous avons utilisé 127.0.0.1 comme hôte distant juste à titre d'exemple, dans votre cas, l'hôte distant serait probablement une machine distante et non votre localhost.
Maintenant que tu as fini de lire SCP Permission Denied : Qu'est-ce qui le cause ? Comment le résoudre ?, nous t'invitons à explorer davantage la catégorie Linux. Tu y trouveras d'autres articles intéressants qui élargiront tes connaissances et te tiendront informé. Ne cesse pas de lire et de découvrir plus!
Laisser un commentaire