50% 할인 모든 플랜, 기간 한정. 시작 가격 $2.48/mo
12분 분량
서버 및 OS

원격에서 로컬로 SCP - Linux SCP 명령어

에이다 러브굿 By 에이다 러브굿 읽는 데 12분
원격에서 로컬로 scp

네트워크를 통해 파일을 전송하다가 보안 문제에 부딪힌 적이 있으신가요? 파일을 네트워크에 그냥 던져놓고 안전하게 유지되길 바랄 수는 없습니다. 데이터를 보호하려면 적절한 보안 수단이 필요합니다. 무단 접근, 네트워크 스니핑, 데이터 유출 등 다양한 위협으로부터 데이터를 지키는 파일 전송 프로토콜을 사용해야 합니다.

SCP(Secure Copy Protocol)는 네트워크상의 서로 다른 머신 간에 파일을 전송하는 강력한 파일 전송 네트워크 프로토콜입니다. 이 글에서는 SCP 프로토콜을 자세히 살펴보고, 원격 머신에서 로컬 머신으로 SCP를 활용하는 방법을 알아봅니다.

SCP는 어떻게 동작하나요? 

SCP는 SSH(Secure Shell)를 사용해 파일을 전송합니다. 그렇다면 SSH가 정확히 무엇일까요? SSH는 서버에 안전하게 원격 접속하기 위한 네트워크 프로토콜입니다. 전송되는 데이터 파일의 인증, 암호화, 무결성 검증 기능을 갖추고 있습니다. SCP는 이러한 SSH의 보안 기능과 암호화 방식을 기반으로 네트워크를 통해 파일을 안전하게 전송합니다. 덕분에 원격 서버에서 로컬 서버로 파일을 전송할 때 SCP를 사용하면 데이터의 신뢰성과 기밀성을 보장받을 수 있습니다.

파일 전송에 SCP를 사용해야 하는 이유와 방법 

원격에서 로컬로, 또는 로컬에서 원격으로 SCP를 사용하는 것은 효율적이고 유연한 파일 전송 방법입니다. SCP는 파일 전송 측면에서 몇 가지 뚜렷한 강점이 있습니다. 예를 들어, FTP 같은 다른 파일 전송 방식보다 보안이 강합니다. 속도 면에서도 차이가 있는데, SCP는 SFTP 같은 다른 프로토콜보다 대체로 훨씬 빠르며, Linux 머신 간 파일 전송에 적합한 도구입니다.

SCP로 파일을 이동할 수 있는 경로:

  • 로컬 머신에서 원격 머신으로
  • 원격 머신에서 로컬 머신으로
  • 원격 머신에서 다른 원격 머신으로

이제 Linux SCP 문법을 실제로 사용해 파일을 전송하는 방법을 살펴보겠습니다. 먼저 양쪽 컴퓨터에 SSH를 설치해야 합니다. 단, SSH는 대부분의 Linux 머신에 기본으로 설치되어 있으므로, 이미 설치된 경우 이 단계를 건너뛰어도 됩니다.

1. SSH 설정

다음 명령어를 실행해 SSH를 설치하세요:

sudo apt install openssh-client

2. SSH 키 생성

그런 다음 클라이언트 장치에서 SSH 연결을 수립해야 합니다. 클라이언트와 서버 간의 보안 연결을 만들려면 개인 키와 공개 키가 필요합니다. 다음 명령어로 SSH 키 쌍을 생성할 수 있습니다:

ssh-keygen

이 명령어를 실행하면 키 쌍의 이름과 패스프레이즈(선택 사항)를 입력하라는 메시지가 표시될 수 있습니다. 키 쌍이 생성되면 공개 키를 서버 머신에 복사해야 합니다.

이제 SCP 명령어의 기본 형식을 살펴보겠습니다:

scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
  • [options] > 이 첫 번째 괄호 자리에는 이후에 설명할 다양한 SCP 옵션을 입력할 수 있습니다.
  • [source username@IP] > 이 괄호를 로컬 머신의 사용자 이름과 IP 주소로 교체하세요. 예: [email protected]
  • [directory/file name] > 이 괄호를 전송할 파일의 경로로 교체하세요.
  • [destination username@IP] > 이 괄호를 수신 머신의 사용자 이름과 IP 주소로 교체하세요.
  • [directory] > 이 부분을 원격 머신에서 파일을 저장할 경로로 교체하세요.

기본 명령어 구조를 파악했으니, 이제 SCP 명령어의 주요 옵션들을 살펴보겠습니다.

옵션 사용 사례
-C
이 옵션을 사용하면 파일 전송 시 SCP가 파일을 압축합니다.
-c <cipher>
이 옵션으로 특정 암호화 방식을 지정할 수 있습니다. 예: scp -c <aes128-ctr>
-v
이 옵션을 사용하면 전송 과정을 단계별로 확인할 수 있습니다.
-l <limit in kilobytes>
이 옵션으로 최대 대역폭을 제한할 수 있습니다. 예를 들어, 아래 명령어는 대역폭 사용량을 초당 100kb로 설정합니다: scp -l 100
-P
이 옵션으로 접속할 원격 서버의 SSH 포트를 변경할 수 있습니다. SCP는 기본적으로 포트 22를 사용합니다.
-S <프로그램 이름>
이 옵션으로 연결에 사용할 프로그램을 선택할 수 있습니다.
-r
파일이나 디렉터리 전체를 재귀적으로 복사합니다.

SCP로 파일 전송하기 

SCP에는 세 가지 전송 유형이 있다는 점, 기억하시죠? 이제 각 유형을 하나씩 살펴보겠습니다. 먼저 시나리오를 설정해 봅시다. 제 Linux 컴퓨터 바탕화면에 고양이 사진이 있습니다. 첫 번째 단계에서는 이 파일을 Linux 원격 서버로 전송합니다. 그다음 로컬 컴퓨터로 다시 가져옵니다. 마지막으로, 이 행운의 고양이는 두 원격 머신 사이를 이동하게 됩니다.

scp를 사용한 이미지 전송

로컬에서 원격으로 SCP 전송 

아래 명령어를 사용하면 로컬 컴퓨터에서 원격 서버로 파일을 전송할 수 있습니다.

scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

비밀번호를 사용해 scp 명령어를 실행하려면 원격 서버의 비밀번호를 입력하면 됩니다. 그러면 전송이 완료됩니다.

SCP로 로컬에서 원격으로 파일 전송하기

원격에서 로컬로 SCP 사용하기

반대 방향으로 전송할 때는 원격 서버 터미널에 접속할 필요가 없습니다. 로컬 컴퓨터의 터미널에서 아래 명령어를 입력하세요.

scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]

보시다시피, 명령어에서 두 부분의 순서만 바꿨습니다.

SCP로 원격에서 로컬로 파일 전송하기

두 원격 머신 간 SCP 사용하기

이제 두 원격 머신 사이에서 파일을 전송해 보겠습니다. 이 단계에서는 두 원격 머신의 비밀번호가 모두 필요하니 미리 준비하세요. 다음 명령어로 두 원격 컴퓨터 간에 파일을 전송합니다.

scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

scp로 두 원격 시스템 간 파일 전송하기

그 외 자주 쓰는 SCP 명령어

가장 많이 쓰이는 SCP 명령어는 원격에서 로컬로, 로컬에서 원격으로, 그리고 두 원격 호스트 간 전송입니다. 하지만 여기서 멈추지 말고, 유용한 Linux scp 활용 예시를 더 살펴보겠습니다.

1. 디렉토리 전체를 재귀적으로 복사하기

파일이 여러 개 담긴 디렉터리 전체를 전송해야 한다고 가정해 봅시다. 파일을 하나씩 전송하면 시간이 많이 걸립니다. 대신, 다음과 같이 scp 다중 파일 명령어로 디렉터리를 재귀적으로 복사할 수 있습니다.

scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]

이 방법은 다양한 상황에서 유용하게 활용할 수 있습니다.

  • 코드 배포: 코드나 웹 애플리케이션을 배포할 때, 파일과 스크립트 등 모든 구성 요소가 포함된 디렉터리 전체를 전송해야 하는 경우가 있습니다.
  • 백업 및 동기화: 디렉터리 전체를 백업하거나 로컬 머신과 원격 서버의 두 디렉터리를 동기화하려면, 모든 내용을 재귀적으로 복사해야 합니다.
  • 시스템 마이그레이션: 시스템 마이그레이션에서 핵심 작업 중 하나는 중요한 데이터를 빠짐없이 복사하고 이전하는 것입니다. SCP 명령에 -r 옵션을 사용하면 이전 과정에서 누락되는 항목 없이 모든 것을 안전하게 옮길 수 있습니다.

2. 대역폭 사용량 제한하기

데이터 전송 속도를 직접 조절하고 싶다면, 다음 명령어를 사용하세요:

scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

왜 그렇게 해야 할까요?
다음 두 가지 상황에서 Linux scp 구문을 사용해 대역폭 제한을 설정할 수 있습니다:

  • 네트워크 혼잡: 네트워크가 혼잡한 상황에서 SCP로 대역폭을 제한하면 네트워크 자원을 효율적으로 분배할 수 있습니다. 대역폭을 제한하면 다른 네트워크 작업이 문제없이 실행됩니다. 공유 네트워크에서 파일을 전송할 때도 마찬가지로 중요한데, 전송 작업이 다른 사용자의 네트워크 활동에 영향을 줄 수 있기 때문입니다.
  • 백그라운드 전송: 자동 백업이나 동기화처럼 백그라운드에서 실행되는 SCP 전송 작업은 네트워크 자원을 과도하게 점유할 수 있습니다. 이런 경우 전송 작업의 대역폭을 제한해 자원을 더 효율적으로 관리할 수 있습니다.

3. 상세 로그 확인하기

SCP에 -v 옵션을 사용하면 전송 과정에 대한 상세 로그를 확인할 수 있습니다. 아래 명령어를 사용하면 자세한 피드백과 정보를 얻을 수 있습니다:

scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

이 명령어를 기억하고 사용해야 하는 이유는 다음과 같습니다:

  • 문제 해결: 이 옵션을 사용하면 전송이 진행되는 동안 파일 크기, 완료 비율 등의 진행 상황을 실시간으로 확인할 수 있습니다. 오류 메시지와 경고도 함께 표시되므로, 이 정보들을 종합해 전송 과정을 모니터링하고 필요할 때 문제를 진단할 수 있습니다.

4. SSH 포트 지정하기

Linux scp 구문에 -P 옵션을 사용하면 SSH 포트를 변경할 수있습니다. 사용 방법은 다음과 같습니다:

scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]

다음과 같은 경우에 유용합니다:

  • 방화벽 설정: 기본 SSH 포트가 차단되어 있거나, 잠재적인 위협으로부터 SSH 서비스를 숨기고 싶을 때 포트를 변경할 수 있습니다.

SCP를 대체할 수 있는 도구가 있나요?

SCP는 빠르고 안전한 도구입니다. 올바른 Linux scp 구문과 기본적인 문제 해결 방법만 알면, SCP 하나로 충분한 경우가 많습니다. 그래도 대안 도구들을 살펴보는 것도 나쁘지 않습니다.

1. rsync

rsync는 고급 동기화 기능, 증분 전송, 로컬 및 원격 복사를 모두 지원하는 다목적 파일 전송 도구입니다. 소스와 대상 파일 간의 차이점만 전송하기 때문에 대역폭 사용량도 줄일 수 있습니다. 또한 전송이 중단된 경우 중단된 지점부터 재개할 수 있다는 것도 큰 장점입니다.

rsync 장점

  • 파일 및 디렉터리의 효율적인 동기화.
  • 델타 전송 알고리즘을 지원해 데이터 전송량을 줄입니다.
  • 중단된 전송을 재개할 수 있습니다.

rsync 단점

  • 소스와 대상 시스템 모두에 rsync가 설치되어 있어야 합니다.
  • scp에 비해 설정과 명령 옵션이 더 복잡합니다.

2. SFTP (SSH 파일 전송 프로토콜)

SFTP는 SSH를 통해 파일을 안전하게 전송하는 방법을 제공합니다. FTP와 유사한 기능을 제공하지만, SCP처럼 암호화된 SSH 연결을 통해 작동합니다. 다만 일부 영역에서는 SFTP가 SCP보다 더 유리합니다. SCP는 디렉터리 목록 조회, 디렉터리 생성 및 삭제 등의 작업을 수행할 수 없습니다. 반면 SFTP는 이러한 작업을 모두 처리할 수 있습니다.

SFTP 장점

  • 암호화를 통한 안전한 파일 전송.
  • 원격 파일 관리 기능 제공.
  • 대부분의 Linux 및 Unix 시스템에서 폭넓게 지원.

SFTP 단점

  • 명령어 문법과 사용 방식이 기존 FTP와 다릅니다.
  • 일부 임베디드 시스템이나 장치에서는 지원이 제한될 수 있습니다.

3. FTP (파일 전송 프로토콜)

FTP는 파일 전송에 널리 쓰이는 표준 프로토콜입니다. 클라이언트-서버 모델로 동작하며 기본적인 파일 전송 기능을 제공합니다.

FTP의 장점

  • 다양한 플랫폼에서 폭넓게 지원.
  • 익숙한 커맨드라인 및 GUI 클라이언트를 사용할 수 있습니다.

FTP 단점

  • 암호화가 없어 scp, sftp에 비해 보안이 취약합니다.
  • 연결 설정을 위해 방화벽 추가 구성이 필요할 수 있습니다.
  • 평문 인증 방식.

scp는 SSH를 통한 안전한 파일 전송에 간단하고 신뢰할 수 있는 선택이지만, rsync, sftp, FTP 같은 대안은 요구 사항에 따라 더 다양한 기능과 유연성을 제공할 수 있습니다.
그렇다면 어떤 도구를 선택해야 할까요? 보안, 동기화 필요성, 사용 편의성, 시스템 및 프로토콜과의 호환성을 함께 고려해야 합니다. 예를 들어, 파일 전송에서 보안과 데이터 기밀성이 가장 중요한 요소라면 FTP는 적합하지 않습니다.

결론 

SCP는 컴퓨터 간 파일을 빠르고 안전하게 전송하는 도구입니다. 원격에서 로컬로, 로컬에서 원격으로, 심지어 두 원격 시스템 간에도 파일을 전송할 수 있습니다. rsync처럼 SCP의 대안이 되는 도구들도 있지만, SCP는 특히 보안과 속도 면에서 이들보다 뛰어납니다. 이 글에서는 SCP의 개념, 활용 사례, 대안 도구를 살펴보고, 자주 쓰는 명령어를 빠르게 참고할 수 있는 치트 시트도 함께 제공했습니다.

자주 묻는 질문 

원격에서 로컬로 SCP를 사용할 때 주의해야 할 보안 문제가 있나요?  

SCP는 꽤 안전한 도구로, 사용 중 보안 위협을 크게 걱정할 필요는 없습니다. 다만 가능한 범위 내에서 추가적인 보안 조치를 취하는 것은 항상 권장됩니다.

원격에서 로컬로 SCP를 사용할 때 자주 발생하는 오류는 무엇인가요? 

원격 서버에서 로컬 머신으로 파일을 전송할 때 몇 가지 오류가 자주 발생합니다. SCP 원격-로컬 전송에서 가장 흔한 오류 두 가지를 소개합니다:

  1. No such file or directory: 포트 번호를 잘못 지정했거나, 파일 권한 설정이 올바르지 않거나, 로그인 정보가 틀렸을 때 발생하는 오류입니다.
  2. Host Key Verification Failed: 서버 업그레이드 등으로 호스트 키가 변경되었을 때 발생하는 오류입니다. 호스트 키는 이전에 해당 서버에 접속한 적이 있음을 나타내는데, 검증에 실패했다는 것은 서버의 신원이 바뀌었음을 의미합니다. 이 오류는 위조 서버에 접속하는 것을 방지하기 위한 보호 장치입니다.

SCP로 원격 시스템 간 파일을 전송하려면 어떻게 하나요?

SCP로 시스템 간 파일을 성공적으로 전송하려면, 두 컴퓨터 모두 SSH를 통해 접근 가능해야 합니다. 또한 원격 머신의 IP 주소와 비밀번호가 필요합니다. 이후에는 올바른 SCP 명령어를 입력하기만 하면 됩니다:

scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

이 명령어를 입력하면 서버 비밀번호를 묻는 메시지가 표시됩니다. 비밀번호를 입력하면 파일 전송이 시작됩니다.

공유

블로그 더 보기

계속 읽기.

Cosmos Cloud로 실행할 수 있는 최고의 셀프 호스팅 앱 - Cosmos 대시보드와 앱 패널 커버 이미지.
서버 및 OS

Cosmos Cloud로 실행할 수 있는 셀프 호스팅 앱 모음: 파일, 미디어, 비밀번호, 자동화 등!

Maybe Cosmos Cloud를 이미 설정했고 어떤 앱이 잘 맞는지 알고 싶거나, 아직 Cosmos를 도입할지 결정하지 못해 실제 워크플로에 얼마나 잘 맞는지 확인하고 싶다면

닉 실버닉 실버 16분 분량
Portainer vs Cosmos Cloud로 Docker 앱 관리하기 — 하이브리드 설정 다이어그램과 운영/접근 블록이 담긴 커버 이미지.
서버 및 OS

Portainer vs Cosmos Cloud: Docker 앱 관리에 적합한 선택은?

Docker를 이미 알고 있고 늘어나는 앱 스택을 더 깔끔하게 운영할 방법을 찾고 있다면, 답은 간단합니다. Portainer vs Cosmos Cloud 중 직접적인 제어 측면에서는 Portainer가 더 나은 선택입니다.

닉 실버닉 실버 14분 분량
Cosmos Cloud vs CasaOS vs Umbrel — 셀프 호스팅의 세 가지 경로를 추상적인 클라우드 네트워크 배경으로 표현한 피처 이미지.
서버 및 OS

Cosmos Cloud vs CasaOS vs Umbrel: 내 환경에 맞는 셀프 호스팅 플랫폼은?

간단히 말하면, CasaOS는 여전히 시작하기 가장 쉬운 선택이고, Umbrel은 큐레이션된 경험이 가장 깔끔하며, 도메인과 설정을 더 세밀하게 제어하고 싶을 때는 Cosmos Cloud가 더 적합합니다.

닉 실버닉 실버 11분 분량

배포할 준비가 됐나요? 월 $2.48부터.

2008년부터 운영해온 독립 클라우드. AMD EPYC, NVMe, 40 Gbps. 14일 환불 보장.