컴퓨터 네트워크를 통해 일부 파일을 전송하고 싶었는데 보안 문제에 직면한 적이 있습니까? 글쎄요, Red Riding Hood처럼 파일을 네트워크에 버리고 보안이 유지되기를 바랄 수는 없습니다! 보안 조치가 필요합니다. 무단 액세스, 네트워크 스니핑, 데이터 침해 및 기타 유형의 위협으로부터 데이터를 보호하는 파일 전송 프로토콜을 사용해야 합니다.
SCP(Secure Copy Protocol)는 네트워크의 여러 컴퓨터 간에 파일을 전송하는 강력한 파일 전송 네트워크 프로토콜입니다. 이 블로그 게시물에서는 이 프로토콜에 대해 더 자세히 알아보고 원격에서 로컬 컴퓨터로 SCP를 사용할 수 있는 가능성을 살펴보겠습니다.
SCP는 어떻게 작동하나요?
SCP는 SSH(Secure Shell)를 사용하여 파일을 전송합니다. 그런데 이게 무슨 뜻일까요? SSH는 서버에 대한 안전하고 안전한 원격 액세스를 위한 네트워크 프로토콜입니다. 전송된 데이터 파일의 무결성을 인증, 암호화 및 확인하는 방법을 갖추고 있습니다. SCP는 SSH에서 제공하는 이러한 보안 기능과 암호화 방법을 사용하여 네트워크를 통해 파일을 안전하게 전송합니다. 이렇게 하면 보안 연결 및 파일 전송을 위해 원격에서 로컬 서버로 SCP를 활용하고 데이터의 신뢰성과 기밀성을 보장할 수 있습니다.
파일 전송을 위해 SCP 사용 왜 그리고 어떻게?
SCP를 원격에서 로컬로, SCP 로컬에서 원격으로 사용하는 것은 파일을 전송하는 효율적이고 유연한 방법입니다. SCP는 파일 전송에 몇 가지 주요 이점을 제공합니다. 예를 들어 SCP는 FTP와 같은 다른 파일 전송 방법보다 더 강력한 보안 조치를 제공합니다. SCP가 다른 프로토콜과 다른 또 다른 측면은 속도입니다. 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]
- [옵션] > 이 첫 번째 괄호는 나중에 설명할 SCP 명령의 다른 옵션으로 대체될 수 있습니다.
- [source username@IP] > 이 대괄호는 로컬 컴퓨터의 사용자 이름과 IP 주소로 대체되어야 합니다. 예: [email protected]
- [디렉터리/파일명] > 이 괄호를 보내려는 파일의 위치로 바꿔야 합니다.
- [destination username@IP] > 이 대괄호는 수신 컴퓨터의 사용자 이름과 IP 주소로 대체되어야 합니다.
- [directory] > 이 섹션을 원격 시스템의 원하는 파일 위치로 바꾸십시오.
이제 일반 명령이 어떻게 생겼는지 알 수 있습니다. SCP 명령의 유용한 옵션을 모두 살펴보겠습니다.
| 옵션 | 사용 사례 |
| -C |
이 옵션을 사용하면 SCP는 파일을 전송할 때 파일을 압축합니다.
|
| -c <암호> |
이 옵션을 사용하여 SCP에 특정 암호를 사용하도록 지시할 수 있습니다. 예를 들어 scp -c <aes128-ctr>입니다.
|
| -v |
이 옵션은 프로세스의 단계별 흐름을 제공합니다.
|
| -l <KB 단위 제한> |
이 옵션을 사용하면 최대 대역폭에 대한 제한을 설정할 수 있습니다. 예를 들어, 다음 예에서는 대역폭 사용량을 초당 100kb로 설정합니다: scp -l 100
|
| -P |
이 옵션을 사용하면 연결하려는 원격 서버의 SSH 포트를 변경할 수 있습니다. SCP는 기본적으로 포트 22를 사용합니다.
|
| -S <프로그램 이름> |
이 옵션을 사용하여 연결할 프로그램을 선택할 수 있습니다.
|
| -r |
전체 파일이나 디렉터리를 재귀적으로 복사합니다.
|
SCP를 사용하여 파일 전송
SCP에는 세 가지 유형의 전송이 있다는 것을 기억하시나요? 이제 각 전송 유형을 독립적으로 살펴보겠습니다. 하지만 시작하기 전에 임무를 정의해 봅시다. 내 Linux 컴퓨터 바탕화면에 이 고양이 사진이 있는데, 첫 번째 단계로 이를 Linux 원격 서버로 전송하고 싶습니다. 그런 다음 다시 로컬 컴퓨터로 전송하겠습니다. 그리고 마지막으로 행운의 고양이는 두 개의 원격 기계 사이를 이동할 것입니다.

로컬에서 원격으로 SCP
이 명령을 사용하면 파일이 로컬 컴퓨터에서 원격 서버로 전송됩니다.
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
비밀번호와 함께 scp 명령을 사용하려면 원격 서버의 비밀번호를 입력해야 합니다. 그러면 끝났습니다.

원격에서 로컬로 SCP
이 과정을 되돌리려면 원격 서버의 터미널에 액세스할 필요가 없습니다. 로컬 컴퓨터의 터미널에 다음 명령을 입력하세요.
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
보시다시피, 우리는 이 명령의 두 부분을 반대로 했습니다.

두 원격 시스템 간의 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, 로컬에서 원격으로의 scp, 두 원격 호스트 간의 SCP입니다. 하지만 여기서 멈추지 말고 다른 유용한 Linux scp 예제를 살펴보겠습니다.
1. 전체 디렉토리를 재귀적으로 복사하기
포함된 모든 파일이 포함된 전체 디렉토리를 전송한다고 상상해 보십시오. 해당 파일을 하나씩 전송하는 것은 정말 시간이 많이 걸립니다. 대신 scp multiple files 명령을 사용하여 디렉터리를 재귀적으로 복사할 수 있습니다.
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
이는 다양한 시나리오에 유용할 수 있습니다.
- 코드 배포: 코드나 웹 애플리케이션을 배포할 때 파일 및 스크립트와 같은 모든 구성 요소가 포함된 전체 디렉터리를 전송해야 할 수도 있습니다.
- 백업 및 동기화: 전체 디렉터리를 백업하거나 로컬 시스템과 원격 서버의 두 디렉터리를 동기화하려는 경우 모든 것을 반복적으로 복사해야 합니다.
- 시스템 마이그레이션: 시스템 마이그레이션에서 중요한 작업은 중요한 정보의 모든 부분을 복사하고 전송하는 것입니다. -r 옵션과 함께 SCP 명령을 사용하면 이동 과정에서 아무것도 놓치지 않도록 할 수 있습니다.
2. 대역폭 사용량 제한
데이터 전송 속도를 제어하려면 다음 명령을 사용할 수 있습니다.
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
그런데 왜 그렇게 하시겠습니까?
다음 두 가지 시나리오에서는 Linux scp 구문을 사용하여 대역폭 제한을 설정할 수 있습니다.
- 네트워크 정체: 네트워크가 매우 혼잡한 경우 scp로 대역폭을 제한하면 네트워크 리소스 배포에 도움이 될 수 있습니다. SCP로 대역폭을 제한하면 다른 네트워크 관련 작업이 문제 없이 실행될 수 있습니다. 이는 공유 네트워크를 통해 파일을 전송할 때도 중요하며, 프로세스가 다른 사용자의 네트워크 활동을 방해할 수 있습니다.
- 백그라운드 전송: 자동 백업 또는 동기화 프로세스와 같은 백그라운드 SCP 전송 중에 이러한 작업이 네트워크 리소스를 소모할 가능성이 있습니다. 이 경우 이러한 전송 프로세스의 대역폭을 제한하여 리소스를 더 잘 관리할 수 있습니다.
3. 자세한 로그 가져오기
SCP와 함께 -v 옵션을 사용하면 전송 프로세스에 대한 추가 정보에 대한 자세한 로그가 제공됩니다. 아래 명령을 사용하여 자세한 피드백과 정보를 얻을 수 있습니다.
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
이 명령을 기억하고 사용해야 하는 이유는 다음과 같습니다.
- 문제 해결: 이 옵션을 사용하면 실행 중인 전송 진행 상황이 표시됩니다. 파일 크기, 완료율 등의 정보를 확인할 수 있습니다. 또한 오류 메시지와 경고도 제공합니다. 이러한 데이터를 결합하면 필요할 때 전송 프로세스를 모니터링하고 문제를 해결할 수 있습니다.
4. SSH 포트 지정
-P 옵션과 함께 Linux scp 구문을 사용하면 다음을 수행할 수 있습니다. SSH 포트 변경. 이를 수행할 수 있는 명령은 다음과 같습니다.
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
이는 다음과 같은 경우에 유용할 수 있습니다.
- 방화벽 구성: 기본 SSH 포트가 제한되어 있거나 잠재적 위협으로부터 SSH 서비스를 숨기려는 경우 SSH 포트를 변경할 수 있습니다.
SCP에 대한 대안이 있습니까?
SCP는 빠르고 안전하며 올바른 Linux 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 전문가
- 다양한 플랫폼에 걸쳐 광범위한 지원을 제공합니다.
- 익숙한 명령줄과 그래픽 클라이언트를 사용할 수 있습니다.
FTP 단점
- scp 및 sftp에 비해 암호화가 부족하고 보안 수준이 낮습니다.
- 연결을 설정하려면 추가 방화벽 구성이 필요할 수 있습니다.
- 일반 텍스트 인증.
전반적으로 scp는 SSH를 통한 보안 파일 전송을 위한 간단하고 안정적인 선택이지만 rsync, sftp 및 FTP와 같은 대안은 특정 요구 사항에 따라 추가 기능과 유연성을 제공할 수 있습니다.
그렇다면 어느 것을 선택할지 어떻게 결정합니까? 보안, 동기화 요구 사항, 사용 용이성, 시스템 및 프로토콜과의 호환성 등의 요소를 고려해야 합니다. 예를 들어, 보안과 데이터 기밀성이 파일 전송에서 가장 중요한 요소라면 FTP는 좋은 선택이 아닙니다.
결론
SCP는 컴퓨터 간 파일 전송을 위한 빠르고 안전한 도구입니다. 원격에서 로컬로, 로컬에서 원격으로, 심지어 두 원격 시스템 간에도 scp를 사용하여 파일을 전송할 수 있습니다. rsync와 같이 적절한 작업을 수행하는 SCP의 대안이 있지만 특히 보안과 속도 측면에서 여러 면에서 이를 능가합니다. 이 블로그 게시물에서 우리는 SCP, 그 사용 사례 및 대안에 대해 이야기했으며 자주 사용되는 구문에 쉽게 접근할 수 있도록 치트 시트도 제공했습니다.
FAQ
원격에서 로컬로 SCP를 사용할 때 알아야 할 보안 문제가 있습니까?
SCP는 상당히 안전하고 안전한 도구이므로 사용하는 동안 보안 위협에 대해 걱정할 필요가 없습니다. 그러나 항상 가능한 추가 보안 조치를 취하는 것이 좋습니다.
SCP 원격을 로컬로 사용할 때 발생하는 일반적인 오류는 무엇입니까?
SCP를 사용하여 원격 서버에서 로컬 컴퓨터로 파일을 전송할 때 사용자는 몇 가지 일반적인 오류가 발생할 수 있습니다. 다음은 SCP 원격-로컬 사용 시 발생하는 가장 일반적인 두 가지 오류입니다.
- 해당 파일 또는 디렉터리 없음: 이 오류는 올바른 포트 번호를 지정하지 않았거나, 파일 권한 설정이 올바르지 않거나, 로그인 정보가 올바르지 않을 때 발생합니다.
- 호스트 키 확인 실패: 서버 업그레이드로 인해 호스트 키가 변경된 경우 발생하는 오류 메시지입니다. 호스트 키는 이전에 해당 서버에 연결한 적이 있음을 나타내며, 호스트 키 확인에 실패하면 서버의 ID가 변경되었음을 나타냅니다. 이 오류는 사기 서버에 연결되지 않도록 보호하기 위한 것입니다.
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]
이 명령을 입력하면 서버에 비밀번호를 제공하라는 메시지가 표시됩니다. 그 후에 파일이 전송됩니다.