Autorizzazione SCP negata: perché succede e come risolverlo

SCP è uno strumento open source per il trasferimento di file tramite SSH. È possibile utilizzarlo su Linux e altri sistemi operativi supportati per trasferire file tramite SSH. Può essere utilizzato per trasferire file tra due host tramite una connessione SSH.

potrebbe succedere errore "autorizzazione negata" In SCP per diverse ragioni, come Percorsi definiti in modo errato O Errore nella scrittura del permessoEsploreremo alcune delle cause che portano a questo errore e come risolverlo.

Motivo: mancanza di permessi di scrittura

Uno dei motivi per cui si verifica questo errore è che Il tuo utente non ha i permessi di scrittura. Per la directory specifica sull'host in cui si sta tentando di scrivere i file. Per verificare queste autorizzazioni, è possibile Utilizzo del comando 'ls -l'Che visualizzerà i permessi di scrittura.

Cerca la lettera 'w' Nei primi quattro caratteri della prima colonna dell'output. Se lo vedi, significa che Il tuo utente ha il permesso di scrittura Quindi, la directory. In alternativa, puoi sempre creare un file usando il comando touch in quella directory. Se non ricevi errori, come "permesso negato", significa che l'utente ha i permessi di scrittura.

Esempio:

Supponiamo che tu voglia copiare un file su un host remoto tramite SCP e che tu riceva un errore "autorizzazione negata" a causa dei permessi di scrittura.

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

Soluzione 1: utilizzare l'account root per trasferire i file

Per correggere un errore del genere, È necessario concedere i permessi di scrittura Affinché il tuo utente abbia accesso a quella directory, hai bisogno di privilegi di root o sudo. Un'altra cosa che puoi fare è copiare il file in una directory in cui il tuo utente ha permessi di scrittura.

In uno scenario del genere, è necessario concedere all'utente corrente i permessi di scrittura su /home/abcduser oppure è possibile utilizzare l'account utente root per copiare questo file.

Per consentire a un utente root di copiare un file tramite scp, è necessario consentire l'accesso root tramite ssh, operazione sconsigliata per motivi di sicurezza, ma che è comunque possibile utilizzare in tali scenari e disabilitare in seguito.

Per fare questo, apri File di configurazione OpenSH situato in /etc/ssh/sshd_config وRimuovi il commento su PermitRootLogin In un editor di testo sull'host remoto.

Quindi, connettiti all'host remoto utilizzando il suo account root.

Quindi eseguire il comando come segue:

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

Oppure, semplicemente, questo farà al caso tuo.

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

Perché sono identici.

Soluzione 2: aggiungi il tuo utente al gruppo con autorizzazioni di scrittura:

Affinché un utente possa scrivere in una directory/file in Linux, è necessario aggiungere l'utente al gruppo proprietario della directory o del file oppure rendere il file di proprietà di quell'utente.

Nel nostro esempio, eseguiamo ls -l sulla directory /home/ sul sistema remoto per scoprire quale gruppo è proprietario di /home/abcd.

Il comando `ls -l` fornirà un output in cui il contenuto della quarta colonna è il gruppo proprietario della directory/file corrispondente.

Nel nostro esempio, il gruppo `abcduser` possiede la directory `/home/abcduser`, e quindi possiamo

Basta eseguire questo comando sul sistema remoto.

sudo groupadd utente abcd

È il gruppo 'abcd' Il gruppo di cui vogliamo che il nostro utente faccia parte e l'utente di cui vogliamo modificare il gruppo è "utente".

Eseguire nuovamente il comando `ls -l` e se Ho visto la lettera 'w' nella sesta posizione Dall'uscita nella prima colonna, ciò significa che il gruppo ha i permessi di scrittura su questa directory.

Quindi esegui nuovamente il comando, che nel nostro caso sarà:

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

Soluzione 3: utilizzare l'utente proprietario di questa directory per copiare il file.

La soluzione più semplice è che l'utente proprietario di questa directory copi il file al suo interno.

Basta eseguire `ls -l` sulla directory. Nel nostro caso, sarà:

ls -l /home/

L'output della terza colonna sarà l'utente proprietario della directory corrispondente al nome della directory che ti interessa. Nel nostro caso, `abcduser` è proprietario della directory `/home/abcduser`, come mostrato nello screenshot qui sopra.

Quindi utilizzare questo account specifico durante la copia del file tramite `scp` sull'host remoto.
Nel nostro caso, eseguiamo il comando come segue:

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

Motivo 2: l'host remoto non dispone di una chiave privata per quell'utente.

Potresti ricevere un errore che indica "autorizzazione scp negata" (chiave pubblica) quando tenti di trasferire file tra host.

Si tratta di un problema di autenticazione per `ssh` e il motivo è che non hai aggiunto una chiave privata a `scp` mentre era in esecuzione.

Esempio:

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

الحل:

La soluzione semplice a questo è Esecuzione del comando `scp` con il flag `-i`Pertanto, aggiungi la chiave privata per l'utente a cui vuoi connetterti all'host remoto e a cui vuoi trasferire i file.

Devi assicurarti di avere la chiave privata per quell'utente e, in caso contrario, devi crearla sul computer remoto e poi fare in modo che lo strumento `scp` la utilizzi con il tag `-i`.

Nel nostro caso la soluzione sarebbe:

scp -i key.pem somefile utente@127.0.0.1:/home/utente/somefile.txt

Dove `key.pem` è il file della chiave privata per l'utente 'user'.

Nota: Abbiamo usato `127.0.0.1` Ad esempio, nel tuo caso l'host remoto è molto probabilmente un dispositivo remoto e non il tuo dispositivo locale.

 

I commenti sono chiusi.