Refus d'accès à SCP : Pourquoi cela se produit et comment y remédier

SCP est un outil open source permettant le transfert de fichiers via SSH. Il est compatible avec Linux et d'autres systèmes d'exploitation prenant en charge le transfert de fichiers entre deux hôtes utilisant une connexion SSH.

Ça peut arriver Erreur « autorisation refusée » Dans SCP pour plusieurs raisons, telles que Routes mal définies ou Erreur dans la rédaction de l'autorisationNous allons explorer certaines des raisons qui conduisent à cette erreur et comment la corriger.

Motif : Absence d'autorisations d'écriture

L'une des raisons pour lesquelles cette erreur se produit est que Votre utilisateur ne dispose pas des autorisations d'écriture. Pour le répertoire spécifique sur l'hôte où vous essayez d'écrire les fichiers. Pour vérifier ces permissions, vous pouvez Utilisation de la commande 'ls -l'Ce qui affichera les autorisations d'écriture.

Cherchez la lettre « w ». Dans les quatre premiers caractères de la première colonne du résultat. Si vous le voyez, cela signifie que Votre utilisateur dispose des droits d'écriture Par conséquent, le répertoire. Vous pouvez également créer un fichier dans ce répertoire à l'aide de la commande `touch`. Si vous ne recevez aucune erreur, telle que « permission refusée », cela signifie que votre utilisateur dispose des droits d'écriture.

Par exemple:

Supposons que vous souhaitiez copier un fichier vers un hôte distant à l'aide de SCP et que vous receviez une erreur « autorisation refusée » en raison d'un problème d'autorisations d'écriture.

scp abcd.txt utilisateur@127.0.0.1:/home/abcduser/abcd.txt

Solution 1 : Utiliser le compte root pour transférer les fichiers

Pour corriger une telle erreur, Vous devez accorder les autorisations d'écriture Pour que votre utilisateur ait accès à ce répertoire, vous devez disposer des privilèges root ou sudo. Vous pouvez également copier le fichier dans un répertoire où votre utilisateur possède les droits d'écriture.

Dans ce cas, vous devez soit accorder à l'utilisateur actuel les droits d'écriture sur /home/abcduser, soit utiliser le compte utilisateur root pour copier ce fichier.

Pour permettre à un utilisateur root de copier un fichier à l'aide de scp, il est nécessaire d'autoriser la connexion root via ssh, ce qui n'est pas recommandé pour des raisons de sécurité, mais vous pouvez néanmoins l'utiliser dans de tels scénarios et la désactiver par la suite.

Pour ce faire, ouvrez Le fichier de configuration d'OpenSH se trouve dans /etc/ssh/sshd_config وSupprimer le commentaire concernant PermitRootLogin Dans un éditeur de texte sur l'hôte distant.

Ensuite, connectez-vous à l'hôte distant en utilisant son compte root.

Exécutez ensuite la commande comme suit :

scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt

Ou tout simplement, ceci fera l'affaire.

scp abcd.txt 127.0.0.1:/abcduser/abcd.txt

Parce qu'ils sont identiques.

Solution 2 : Ajoutez votre utilisateur au groupe disposant des autorisations d’écriture :

Pour qu'un utilisateur puisse écrire dans un répertoire/fichier sous Linux, il faut soit ajouter l'utilisateur au groupe propriétaire du répertoire ou du fichier, soit faire en sorte que le fichier appartienne à cet utilisateur.

Dans notre exemple, nous exécutons la commande ls -l sur le répertoire /home/ du système distant pour déterminer quel groupe est propriétaire de /home/abcd.

La commande `ls -l` vous donnera un résultat, où le contenu de la quatrième colonne est le groupe qui possède le répertoire/fichier correspondant.

Dans notre exemple, le groupe `abcduser` est propriétaire du répertoire `/home/abcduser`, et nous pouvons donc

Il suffit d'exécuter cette commande sur le système distant.

sudo groupadd utilisateur abcd

C'est le groupe 'abcd' Le groupe auquel nous souhaitons que notre utilisateur appartienne, et l'utilisateur dont nous voulons modifier le groupe, est « utilisateur ».

Exécutez à nouveau la commande `ls -l`, et si J'ai vu la lettre « w » en sixième position. L'indication « sortie » dans la première colonne signifie que le groupe dispose des droits d'écriture sur ce répertoire.

Exécutez ensuite à nouveau la commande, qui dans notre cas sera :

scp abcd.txt utilisateur@somepc:/home/abcduser/abcd.txt

Solution 3 : Utilisez l’utilisateur propriétaire de ce répertoire pour copier le fichier.

La solution la plus simple consiste à ce que l'utilisateur propriétaire de ce répertoire y copie le fichier.

Il suffit d'exécuter la commande `ls -l` sur le répertoire. Dans notre cas, cela donnera :

ls -l /home/

La troisième colonne affichera l'utilisateur propriétaire du répertoire correspondant au nom de répertoire recherché. Dans notre exemple, `abcduser` est propriétaire du répertoire `/home/abcduser`, comme illustré dans la capture d'écran ci-dessus.

Utilisez ensuite ce compte spécifique lors de la copie du fichier à l'aide de `scp` vers l'hôte distant.
Dans notre cas, nous exécutons la commande comme suit :

scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt

Raison 2 : L’hôte distant ne possède pas de clé privée pour cet utilisateur.

Vous pouvez recevoir une erreur indiquant « autorisation scp refusée » (clé publique) lors de la tentative de transfert de fichiers entre hôtes.

Il s'agit d'un problème d'authentification pour `ssh` et la raison en est que vous n'avez pas ajouté de clé privée à `scp` pendant son exécution.

Par exemple:

scp somefile user@127.0.0.1:/home/user/somefile.txt

Solution:

La solution simple à cela est Exécuter la commande `scp` avec l'option `-i`Ajoutez donc la clé privée de l'utilisateur auquel vous souhaitez vous connecter à l'hôte distant et transférer des fichiers.

Vous devez vous assurer de disposer de la clé privée de cet utilisateur. Si vous ne l'avez pas, vous devez la créer sur la machine distante, puis configurer l'outil `scp` pour qu'il l'utilise 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 de l'utilisateur 'user'.

Note: Nous avons utilisé `127.0.0.1` Par exemple, s'agissant d'un hôte distant, dans votre cas, l'hôte distant est très probablement un appareil distant et non votre appareil local.

 

Les commentaires sont fermés.