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.

En SCP, el error "permiso denegado" puede deberse a varios motivos, como rutas definidas incorrectamente o un error de permisos de escritura . Analizaremos algunas de las causas de este error y cómo solucionarlo.
Motivo: Falta de permisos de escritura
Una de las razones de 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 usar el comando 'ls -l' , que mostrará los permisos de escritura.

Busca la letra 'w' entre los primeros cuatro caracteres de la primera columna de la salida. Si la encuentras, tu usuario tiene permisos de escritura para ese directorio. También puedes crear un archivo usando el comando `touch` en ese directorio. Si no recibes ningún error, como "permiso denegado", tu 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 solucionar este error, debes otorgarle a tu usuario permisos de escritura en ese directorio. Por lo tanto, necesitas privilegios de administrador (root) o sudo. Otra opción es 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 ello, abra el archivo de configuración de openssh en /etc/ssh/sshd_config y descomente la línea 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
Queremos que nuestro usuario pertenezca al grupo 'abcd' , y el usuario cuyo grupo queremos cambiar es 'user'.
Vuelva a ejecutar el comando `ls -l`, y si ve la letra 'w' en la sexta posición de la salida en la primera columna, 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 sencilla consiste en ejecutar el comando `scp` con la opción `-i` , añadiendo así la clave privada del usuario al que se desea conectar para transferir archivos al host remoto.
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'.
Nota: Hemos utilizado `127.0.0.1` como host remoto solo a modo de ejemplo; en su caso, es más probable que el host remoto sea una máquina remota y no su máquina local.
Los comentarios están cerrados.