SCP 접근 거부: 발생 원인 및 해결 방법
SCP는 SSH를 통해 파일을 전송하는 오픈 소스 도구입니다. Linux 및 기타 지원되는 운영 체제에서 SSH를 통해 파일을 전송하는 데 사용할 수 있습니다. SSH 연결을 사용하여 두 호스트 간에 파일을 전송하는 데 사용할 수 있습니다.

일어날지도 모른다 "권한이 거부되었습니다" 오류 SCP에서는 다음과 같은 여러 가지 이유로 인해 잘못 정의된 경로 또는 권한 작성 오류이 오류가 발생하는 몇 가지 원인과 해결 방법을 살펴보겠습니다.
이유: 쓰기 권한 부족
이 오류가 발생하는 한 가지 이유는 다음과 같습니다. 해당 사용자에게 쓰기 권한이 없습니다. 호스트의 특정 디렉터리에 파일을 쓰려는 경우 해당 디렉터리의 권한을 확인해야 합니다. 권한을 확인하려면 다음을 수행할 수 있습니다. 'ls -l' 명령어를 사용하면그러면 쓰기 권한이 표시됩니다.

'w'라는 글자를 찾아보세요. 출력 결과의 첫 번째 열에 있는 처음 네 글자 안에 있습니다. 만약 그것이 보인다면, 그것은 다음을 의미합니다. 사용자에게 쓰기 권한이 있습니다. 따라서 해당 디렉터리를 사용하면 됩니다. 또는 touch 명령어를 사용하여 해당 디렉터리에 파일을 생성할 수도 있습니다. '권한 거부'와 같은 오류 메시지가 나타나지 않으면 해당 사용자에게 쓰기 권한이 있는 것입니다.
예:
SCP를 사용하여 원격 호스트로 파일을 복사하려고 하는데 쓰기 권한 문제로 "권한 거부" 오류가 발생하는 경우를 가정해 보겠습니다.
scp abcd.txt user@127.0.0.1:/home/abcduser/abcd.txt
해결 방법 1: 루트 계정을 사용하여 파일을 전송합니다.
이러한 오류를 수정하려면, 쓰기 권한을 부여해야 합니다. 해당 디렉토리에 접근하려면 루트 또는 sudo 권한이 필요합니다. 또는 파일을 사용자가 쓰기 권한을 가진 디렉토리로 복사하는 방법도 있습니다.
이러한 상황에서는 현재 사용자에게 /home/abcduser에 대한 쓰기 권한을 부여하거나 루트 사용자 계정을 사용하여 해당 파일을 복사해야 합니다.
루트 사용자가 scp를 사용하여 파일을 복사할 수 있도록 하려면 SSH를 통한 루트 로그인을 허용해야 합니다. 보안상의 이유로 권장되지는 않지만, 이러한 상황에서는 SSH를 사용한 후 나중에 비활성화할 수 있습니다.
이렇게 하려면 다음을 엽니다. OpenSH 설정 파일은 /etc/ssh/sshd_config에 있습니다. وPermitRootLogin에 대한 댓글을 삭제하세요 원격 호스트의 텍스트 편집기에서.

다음으로, 루트 계정을 사용하여 원격 호스트에 연결합니다.
그런 다음 다음과 같이 명령어를 실행하세요.
scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt
간단히 말해서, 이 정도면 충분할 겁니다.
scp abcd.txt 127.0.0.1:/abcduser/abcd.txt
둘은 똑같기 때문입니다.
해결 방법 2: 사용자를 쓰기 권한 그룹에 추가합니다.
리눅스에서 사용자가 디렉터리/파일에 쓰기 권한을 얻으려면 해당 사용자를 디렉터리 또는 파일의 소유자 그룹에 추가하거나 해당 파일의 소유자를 해당 사용자로 지정해야 합니다.
이 예시에서는 원격 시스템의 /home/ 디렉터리에서 ls -l 명령을 실행하여 /home/abcd 디렉터리의 소유자가 누구인지 확인합니다.
`ls -l` 명령어를 실행하면 네 번째 열에 해당 디렉터리/파일을 소유하는 그룹이 표시됩니다.

예시에서 `abcduser` 그룹은 `/home/abcduser` 디렉터리의 소유자이므로 다음과 같이 할 수 있습니다.
원격 시스템에서 이 명령어를 실행하기만 하면 됩니다.
sudo 그룹 추가 사용자 abcd
그것은 그룹입니다 'abcd' 우리가 사용자를 속하게 하려는 그룹과, 그룹을 변경하려는 사용자의 이름은 모두 'user'입니다.
`ls -l` 명령어를 다시 실행하고, 만약 나는 여섯 번째 위치에서 'w'라는 글자를 보았다. 첫 번째 열의 종료 표시를 보면, 해당 그룹이 이 디렉터리에 대한 쓰기 권한을 가지고 있음을 알 수 있습니다.
그런 다음 명령어를 다시 실행하세요. 이 경우 명령어는 다음과 같습니다.
scp abcd.txt user@somepc:/home/abcduser/abcd.txt
해결 방법 3: 이 디렉터리의 소유자인 사용자를 사용하여 파일을 복사합니다.
가장 간단한 해결책은 해당 디렉터리의 소유자가 파일을 해당 디렉터리로 복사하는 것입니다.
해당 디렉토리에서 `ls -l` 명령어를 실행하기만 하면 됩니다. 저희의 경우 결과는 다음과 같습니다.
ls -l /home/

세 번째 열에는 관심 있는 디렉터리 이름에 해당하는 디렉터리의 소유자가 표시됩니다. 위 스크린샷에서 볼 수 있듯이, 이 경우 `abcduser` 사용자가 `/home/abcduser` 디렉터리의 소유자입니다.
그런 다음 `scp` 명령어를 사용하여 파일을 원격 호스트로 복사할 때 이 특정 계정을 사용하십시오.
저희의 경우, 다음과 같이 명령어를 실행합니다.
scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt
이유 2: 원격 호스트에 해당 사용자의 개인 키가 없습니다.
호스트 간 파일 전송을 시도할 때 "scp 권한 거부됨(공개 키)" 오류 메시지가 나타날 수 있습니다.
이는 `ssh` 인증 문제이며, 그 이유는 `scp` 실행 중에 개인 키를 추가하지 않았기 때문입니다.
예:
scp somefile user@127.0.0.1:/home/user/somefile.txt
해결책:
그에 대한 간단한 해결책은 다음과 같습니다. `scp` 명령어를 `-i` 플래그와 함께 실행따라서 원격 호스트에 연결하여 파일을 전송하려는 해당 사용자의 개인 키를 추가하십시오.
해당 사용자의 개인 키가 있는지 확인해야 하며, 없다면 원격 컴퓨터에서 개인 키를 생성한 다음 `scp` 도구가 `-i` 태그를 사용하여 해당 키를 사용하도록 설정해야 합니다.
우리 경우에는 해결책이 다음과 같습니다.
scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt
여기서 `key.pem`은 사용자 'user'의 개인 키 파일입니다.
ملاحظة : 우리는 사용했습니다 `127.0.0.1` 예를 들어 원격 호스트라고 할 때, 귀하의 경우 원격 호스트는 로컬 장치가 아닌 원격 장치일 가능성이 높습니다.
댓글이 닫혀있다.