
SCP는 Secure Copy의 약자로 리눅스 환경에서 remote로 전송할 수 있습니다. 즉, 외부로 복사하거나 외부 파일을 복사하여 가져올 수 있습니다. 일반적인 cp 명령어의 앞에 s를 붙여 scp를 사용합니다. 그럼 아래에서 자세하게 예제와 알아보세요.
# SCP, Secure Copy를 사용하여 외부, remote 저장소에 카피하기
아래는 다양한 scp를 사용하는 예제들입니다. 현재 로컬에서 외부 ip로 파일을 전송하거나 반대로 외부 ip의 자료를 현재 local에 가져올 수도 있습니다. 그럼 아래를 봐주세요.! scp 명령어시 Permission 에러가 발생하는 경우
scp 사용시 만약 Permissions XXX for keyfile are too open. 이라는 에러가 발생할 수 있습니다. 이는 Private 키의 퍼미션이 제한적이지 않기 모두 공개되어 있기 때문에 발생하는 Permission 문제입니다. 이를 해결하기 위해서 chmod를 사용하여 400 또는 600 으로 제한하여 다시 시도해 보시기 바랍니다.
$ chmod 400 keyfile
만약 동작하지 않으면 root 권한을 가지고 있는지 역시 확인해보시기 바랍니다. root에서 user account로 변경 후 다시 시도해보세요.
! Remote Server에서 Permission denied가 발생하는 경우
이 경우 Permission error(Public)과는 리모트에서 Permission denied 에러가 발생한 경우입니다... 즉 scp를 사용하기 위해서는 보내는 local과 받는 remote server의 permission이 해당 사용자에 대하여 모든 Permission이 문제 제 없어야만 가능합니다.
remote server의 user가 webisfree인 경우라면 복사할 경로(/test/)에 chown을 사용하여 해당 사용자 권한을 아래와 같이 부여합니다.
$ chown webisfree test
이제 다시 시도해 보시기 바랍니다.
! scp를 사용하여 다른 remote server에 ip로 복사하기
만약 현재 위치에 있는 abc.txt라는 이름의 파일을 특정 remote ip로 복사하는 방법입니다. 아래와 같이 user@ip:/경로/를 사용하여 파일을 전송할 수 있습니다.
$ scp abc.txt ubuntu@123.456.789.012:/test/
위에서는 사용자가 ubuntu, ip가 123.456.789.012인 경우의 예입니다. 실행하면 해당하는 패스워드를 입력하게 됩니다.
! remote의 webisfree.com에 있는 test.txt을 local host의 /home/ubuntu로 복사하기
$ scp ubuntu@webisfree.com:test.txt /home/ubuntu/
! remote의 webisfree.com에 있는 test.txt을 local host의 현재경로에 복사하기
$ scp ubuntu@webisfree.com:test.txt .
! test.txt를 webisfree.com의 8080포트로 remote 복사하기
$ scp -P 8080 test.txt ubuntu@webisfree.com
! Options 설정하기
-v // Debug 정보를 함께 출력합니다.
-i // 인증이 필요한 경우 -> -i filename
# 여러개의 파일 한번에 복사하기
아래는 test1.txt, test2.txt, test3.txt 파일(multi files copy)을 현재 경로에 복사합니다.$ scp ubuntu@webisfree.com:/home/\{test1.txt, test2.txt, test3.txt\} .
이처럼 여래개의 파일인 경우 쉽게 멀티복사가 가능하니다. 모습이 객체처럼 데이터를 처리, 복사합니다.
# 인증이 필요한 경우만약 test.pem 파일로 인증이 필요한 경우 -i 옵션을 사용하여 아래처럼 실행합니다.
$ scp -i test.pem test.txt .
이제 인증을 거쳐 scp가 동작합니다.
Author ByEnSSo
네. 도움이 되었어요
아니요. 별로에요