로컬에서 원격 호스트로 파일을 scp 할 수 없음-권한 거부


0

로컬 컴퓨터에서 원격 호스트로 일부 파일을 복사하려고했습니다.

root@local:~$ scp /var/www/html/file.php root@remote_host:/var/www/html/test/

결과는

scp : / var / www / html / test : 권한이 거부되었습니다

root @ remote_host의 비밀번호 : 권한이 거부되었습니다. 다시 시도하십시오.

이것들은 원격 컴퓨터의 폴더에 대한 권리입니다

drwxrwxr-x

어떤 아이디어가 문제가 될 수 있습니까?


가능한 많은 이유가 있으며 기본적으로 remote_host : /. ssh /에 authorized_keys를 올바르게 설정하지 않았습니다. 다른 사람이 도울 수 있도록 기본적인 문제 해결을 수행하고 관찰 한 사항을보고해야합니다.
chingNotCHing

그러나 올바르게 정의되지 않으면이 서버에 연결하고 로그인 할 수 없습니다.
Jason Paddle

예를 들어, remote_host : /. ssh / authorized_keys에 로컬 호스트의 펍 키 항목이 있으면 비밀번호를 입력하는 대신 pki로 인증됩니다. 그러나 최근에 로컬 호스트의 IP가 변경된 경우 실패했을 것입니다. ssh 튜토리얼을 참조하는 것이 좋습니다.
chingNotCHing

if there's an entry of your local host's pub key in remote_host:/.ssh/authorized_keys, then you'd be authenticated with pki instead of inputting password.지금은 이해. 나는 그 서버에 비밀번호없이 로그인 한 적이 없다. 아니요, 내 IP는 항상 동일합니다.
Jason Paddle

답변:


1

root로 로그인하면 root는 모든 디렉토리에 대한 권한에 관계없이 모든 권한이 허용됩니다 (chflags (1)에 대해 디렉토리에 시스템 불변 플래그가있는 경우에만 제외 가능)

잘못된 비밀번호를 제공했거나 원격 호스트가 공개 키 인증 만 사용했습니다.


답변 해주셔서 감사합니다. or remote host used public key authentication only나는 이것에 익숙하지 않다. 아무 문제없이 루트로 로그인 할 수 있지만 복사 할 수 있습니다.
Jason Paddle

또한 100 %에서 암호가 틀리지 않습니다.
Jason Paddle

알았어 rsync -v -e ssh SomeLocalFile root@remoteHost:~. SomeLocalFile루트의 집으로 복사 됩니까 ? 또한 원격 서버 which scpscp
Alex

3

물론 그 이유는 다양 할 수 있습니다.

가장 확실한 대답은 어떤 이유로 든 원격 시스템에 의해 인증 될 수 없다는 것입니다. 그러나 원격 시스템에서 디렉토리 권한을 출력하고 있기 때문에 어떤 방법 으로든 ssh가 아닌 액세스 권한이 있다고 가정합니다.

따라서 가장 먼저해야 할 일은 머신에 ssh하고 실제로 시도 할 수있는 해당 위치에 실제로 쓸 수 있는지 확인하는 것입니다.

ssh root@remote_host
cd /var/www/html/test/
touch scratch

빈 파일 스크래치가 보이면 쓸 수 있음을 알 수 있습니다.

시스템에 올바르게 액세스 할 수 있지만 위의 방법으로 작동하지 않는다고 가정하면 실제로 디렉토리에 대한 쓰기 권한이 없을 수도 있습니다. 예를 들어, 원격 시스템의 디렉토리가 특정 유형의 마운트 된 파일 시스템 내에있는 경우 (예 : NTFS (신뢰할 수있는 UNIX 유형 모드를 제공하지 않음)) 커널이 디렉토리를 읽기 전용으로 설정 한 경우 쓰기 권한을 부여하기 위해 퓨즈를 통해 마운트되지 않았습니다. 로컬 설정을보다 신중하게 확인해야하지만, 새로 설정하지 않은 경우 (또는 그렇게 설계되지 않은 경우) 매우 특이한 설정입니다.

여기에서 시스템을 디버깅하는 것은 어려울 것이므로 다른 방법을 시도해 보겠습니다. ssh를 통해 시스템에 액세스하고 시스템 내에서 파일을 쓸 수 있다면 로컬 컴퓨터가 방화벽 뒤에 있지 않은 경우 반대 방향으로 수행하는 것입니다.

다른 터미널로 이동하지 않고도 ssh 한 컴퓨터의 IP를 쉽게 찾을 수 있습니다. 단순성을 위해 환경 변수로 만들어 봅시다.

export IP="`echo $SSH_CLIENT | awk '{print $1}'`"

~ / .bashrc와 같이 일반적으로이 줄을 포함시킵니다.

어쨌든

scp user@$IP:/var/www/html/file.php /var/www/html/test/

물론 로컬 컴퓨터에서 이러한 업데이트를 자동으로 수행하는 프로그램을 실행하려는 경우 아직 문제가 해결되지 않습니다! SSH를 통해 명령을 호출하여이를 해결할 수있는 방법이 있습니다 (따라서 반 직관적으로 보이는 ssh를 통해 scp를 호출합니다). 그러나 완전히 자동화 되려면 ssh 키를 설정하고 키의 비밀번호를 설정하지 않아야합니다. 이것은 머신에 대한 루트 액세스에 권장되는 것이 아니며 scp를 차단하는 원격 머신의 ssh를 사용하여 디버깅해야합니다.


이 답변에 감사드립니다. 그래서 원격 컴퓨터에 로그인하는 동안 역으로 시도했습니다. scp user@myip:/var/www/html/file.php /var/www/html/test/물론 글 을 쓸 때 나는 user@myip진짜로 바뀌지 않습니다. 콘솔에 매달리고 하얀 점이 깜박 거립니다.
Jason Paddle

[root@remote_host /var/www/html/test ]# touch test, [root@remote_host /var/www/html/test ]# ls -al, -rw-r--r-- 1 root root 0 Jul 23 14:55 test... 그래서 나는 폴더에 파일을 만들 수 있습니다
제이슨 패들에게

포트 22가 사용되는지 확인 하시겠습니까? nmap -PN localhost여기서 localhost는 그대로입니다. 다음 ssh -p 22과 같이 작동 하고 scp -P 22포트 22 (기본값)에 대해 유의하십시오 . p와 P의 경우는 대칭이 아닙니다. 나는 아무런 문제가 없다고 생각하지만 서버의 세부 사항을 언급하지 않을 수도 있습니다. 포트가 22 인 경우 기본적으로 scp와 동일한 대상 및 위치 필드에 다음을 사용할 수 있습니다.alias scpresume="rsync --partial --progress --rsh=ssh -e 'ssh -p 22'"
daid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.