scp란?
Secure Copy Protocal의 약자로, 파일을 시스템간 안전하게 복사하는 프로토콜
ssh 프로토콜을 사용해 암호화된 연결을 통한 데이터 전송을 한다.
필요성
- 보안성이 높은 파일 전송:
- scp는 데이터를 암호화하여 전송하므로, 비밀번호나 중요한 데이터를 안전하게 이동할 수 있습니다.
- 디렉터리 구조 전송:
- -r 옵션으로 하위 디렉터리를 포함한 복사를 지원.
- 대용량 파일 전송 속도 향상:
- -C 옵션을 사용하여 전송 속도를 높일 수 있음.
- 비표준 SSH 포트 서버:
- 기본 SSH 포트가 아닌 서버에 연결해야 할 때 -P 옵션이 필요.
- 자동화된 전송 스크립트:
- -i 옵션으로 SSH 키를 지정하면 비밀번호 입력 없이 자동화 가능.
사용법
- source: 복사할 파일의 경로 (로컬 또는 원격).
- destination: 파일을 복사할 경로 (로컬 또는 원격).
scp [옵션] [source] [destination]
옵션
옵션 | 설명 | 필요한 상황 |
-r | 디렉터리를 복사. 하위 파일/디렉터리 모두 포함. | 디렉터리 전체를 복사해야 할 때. |
-P | 원격 서버의 SSH 포트를 지정. | 기본 포트(22)가 아닌 다른 포트를 사용하는 서버와 연결해야 할 때. |
-C | 파일 전송 중 압축을 활성화. | 대용량 파일을 전송할 때 전송 속도를 높이고 싶을 때. |
-q | 출력 메시지(전송 상태 등)를 숨김. | 조용히 작업을 수행하고 싶을 때. |
-i | 특정 SSH 키 파일을 지정하여 인증. | 패스워드 대신 SSH 키를 사용하는 경우. |
-l | 대역폭 제한(kbps 단위). | 네트워크 대역폭을 조절하고 싶을 때. |
-o | SSH 옵션을 지정. | 예: -o StrictHostKeyChecking=no (호스트 키 확인을 무시하고 빠르게 연결해야 할 때). |
예시
# 일반적 사용방법
# 로컬 -> 원격
scp /path/to/local/file username@remote_host:/path/to/remote/destination
# 원격 -> 로컬
scp username@remote_host:/path/to/remote/file /path/to/local/destination
# 원격 -> 원격
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
# 옵션 사용방법
# 디렉토리 전체 카피
scp -r /local/dir username@remote_host:/remote/dir
# 비표준 포트 연결
scp -P 2222 /local/file username@remote_host:/remote/file
# 압축 전송
scp -C /local/large_file username@remote_host:/remote/large_file
# ssh키로 인증
scp -i /path/to/private_key /local/file username@remote_host:/remote/file
성공시 아래와 같이 출력됨
주의사항
- 네트워크 상태:
- 네트워크 불안정 시 파일 전송이 정상적으로 이뤄지지 않을 수 있음
- rsync 가 재전송이 가능하기 때문에 rsync를 사용하는게 나을 수 있음
- 보안 인증:
- 호스트키 확인 무시등 잘못된 ssh 설정은 보안 취약성을 초래할 수 있음.
- 권한 문제:
- 대상 경로에 쓰기 권한이 없으면 전송 할수 없음
댓글