Permiso SCP denegado: por qué sucede y cómo solucionarlo
SCP es una herramienta de código abierto para transferir archivos por SSH. Puede usarse en Linux y otros sistemas operativos compatibles para transferir archivos por SSH. Permite transferir archivos entre dos hosts mediante una conexión SSH.

podría suceder Error de “permiso denegado” En SCP por varias razones, como: Rutas definidas incorrectamente O Error al escribir el permisoExploraremos algunas de las razones que conducen a este error y cómo solucionarlo.
Motivo: Falta de permisos de escritura
Una razón por la que se produce este error es que Su usuario no tiene permisos de escritura. Para el directorio específico del host donde intenta escribir los archivos. Para comprobar estos permisos, puede... Usando el comando 'ls -l'Que mostrará los permisos de escritura.

Busca la letra 'w' Dentro de los primeros cuatro caracteres de la primera columna de la salida. Si lo ves, significa que... Su usuario tiene permiso de escritura Por lo tanto, el directorio. Como alternativa, siempre puede crear un archivo con el comando "touch" en ese directorio. Si no recibe ningún error, como "permiso denegado", significa que su usuario tiene permisos de escritura.
Por ejemplo:
Supongamos que desea copiar un archivo a un host remoto mediante SCP y recibe un error de “permiso denegado” debido a los permisos de escritura.
scp abcd.txt usuario@127.0.0.1:/inicio/abcduser/abcd.txt
Solución 1: Utilice la cuenta raíz para transferir archivos
Para corregir este error, Necesitas conceder permisos de escritura Para que tu usuario tenga acceso a ese directorio, necesitas privilegios de root o sudo. También puedes copiar el archivo a un directorio donde tu usuario tenga permisos de escritura.
En tal escenario, debe permitir que el usuario actual tenga permisos de escritura en /home/abcduser o puede usar la cuenta de usuario raíz para copiar este archivo.
Para permitir que un usuario root copie un archivo usando scp, debe permitir el inicio de sesión de root a través de ssh, lo que no se recomienda por razones de seguridad, pero puede usarlo de todos modos en tales escenarios y deshabilitarlo después.
Para hacer esto, abra Archivo de configuración de OpenSH ubicado en /etc/ssh/sshd_config وEliminar el comentario sobre PermitRootLogin En un editor de texto en el host remoto.

A continuación, conéctese al host remoto utilizando su cuenta raíz.
Luego ejecute el comando de la siguiente manera:
scp abcd.txt raíz@127.0.0.1:/abcduser/abcd.txt
O simplemente, esto funcionará.
scp abcd.txt 127.0.0.1:/abcduser/abcd.txt
Porque son idénticos.
Solución 2: Agregue su usuario al grupo de permisos de escritura:
Para que un usuario pueda escribir en un directorio/archivo en Linux, debe agregar el usuario al grupo propietario del directorio o archivo, o hacer que el archivo sea propiedad de ese usuario.
En nuestro ejemplo, ejecutamos ls -l en el directorio /home/ del sistema remoto para averiguar qué grupo es propietario de /home/abcd.
El comando `ls -l` le dará una salida, donde el contenido de la cuarta columna es el grupo que posee el directorio/archivo correspondiente.

En nuestro ejemplo, el grupo `abcduser` es propietario del directorio `/home/abcduser` y, por lo tanto, podemos
Simplemente ejecute este comando en el sistema remoto.
sudo groupadd usuario abcd
Es el grupo 'abcd' El grupo del que queremos que nuestro usuario sea parte y el usuario cuyo grupo queremos cambiar es 'usuario'.
Ejecute el comando `ls -l` nuevamente y si Vi la letra 'w' en la sexta posición Desde la salida en la primera columna, esto significa que el grupo tiene permisos de escritura en este directorio.
Luego ejecuta nuevamente el comando, que en nuestro caso será:
scp abcd.txt usuario@somepc:/home/abcduser/abcd.txt
Solución 3: Utilice el usuario propietario de este directorio para copiar el archivo.
La solución más sencilla de todas es que el usuario propietario de este directorio copie el archivo en él.
Simplemente ejecute `ls -l` en el directorio. En nuestro caso, será:
ls -l /inicio/

La salida de la tercera columna será el usuario propietario del directorio correspondiente al nombre de directorio que le interesa. En nuestro caso, `abcduser` es propietario del directorio `/home/abcduser` como se muestra en la captura de pantalla anterior.
Luego use esta cuenta específica mientras copia el archivo usando `scp` al host remoto.
En nuestro caso, ejecutamos el comando de la siguiente manera:
scp abcd.txt abcduser@127.0.0.1:/inicio/abcduser/abcd.txt
Razón 2: El host remoto no tiene una clave privada para ese usuario.
Es posible que reciba un error que indique “permiso scp denegado” (clave pública) al intentar transferir archivos entre hosts.
Este es un problema de autenticación para `ssh` y el motivo es que no agregó una clave privada a `scp` mientras se estaba ejecutando.
Por ejemplo:
scp algúnarchivo usuario@127.0.0.1:/inicio/usuario/algúnarchivo.txt
Solución:
La solución simple para eso es Ejecutar el comando `scp` con el indicador `-i`Por lo tanto, agregue la clave privada para el usuario que desea conectarse al host remoto y transferir archivos.
Debe asegurarse de tener la clave privada para ese usuario y, si no la tiene, debe crearla en la máquina remota y luego hacer que la herramienta `scp` la use con la etiqueta `-i`.
En nuestro caso la solución sería:
scp -i key.pem algúnarchivo usuario@127.0.0.1:/home/usuario/algúnarchivo.txt
Donde 'key.pem' es el archivo de clave privada para el usuario 'usuario'.
ملاحظة: Hemos usado `127.0.0.1` Como host remoto, a modo de ejemplo únicamente, en su caso el host remoto probablemente sea un dispositivo remoto y no su dispositivo local.
Los comentarios están cerrados.