12 scp command examples securely transfer files linux
이 자습서에서는 구문 및 예를 사용하여 Linux 및 Unix에서 파일을 안전하게 복사하는 데 사용되는 보안 복사 프로토콜 또는 SCP 명령에 대해 설명합니다.
이 기사에서는 파일 전송에 사용되는 SCP (Secure Copy Protocol) 명령에 대해 설명합니다. 몇 가지 예를 통해 그것이 무엇이며 어떻게 작동하는지 볼 것입니다. 자, 먼저 SCP 명령이 무엇인지 이해해 보겠습니다.
학습 내용 :
SCP 명령이란?
SCP (Secure Copy Protocol)는 컴퓨터 네트워크의 호스트간에 파일을 안전하게 전송하는 데 사용되는 네트워크 프로토콜입니다. Linux 및 Unix 계열 시스템에서이 명령 줄 유틸리티를 사용하면 로컬 호스트에서 원격 호스트로, 원격 호스트에서 로컬 시스템으로 또는 두 원격 호스트간에 파일 전송을 수행 할 수 있습니다.
(영상 출처 )
SCP는 파일 전송을위한 SSH (Secure Shell) 메커니즘을 사용하여 데이터의 신뢰성, 암호화 및 기밀성을 보장합니다. 따라서 전송중인 데이터는 스누핑 공격으로부터 보호됩니다. 클라이언트는이 프로토콜을 사용하여 서버에 파일과 디렉토리를 업로드하고 다운로드 할 수 있습니다. 인증을 위해 암호 또는 키가 필요합니다. SCP의 기본 포트는 TCP 포트 22입니다.
SCP 프로토콜의 이점은 파일 전송을 위해 FTP 세션을 시작하거나 원격 호스트에 명시 적으로 로그인 할 필요가 없다는 것입니다.
SCP 프로토콜 구문
# 1) 로컬에서 원격 호스트로 파일 복사
scp (options) SourceFileName UserName@TargetHost:TargetPath
이것은 사용자 계정을 사용하여 현재 호스트에서 대상 호스트의 대상 경로로 소스 파일을 복사하는 SCP 명령의 매우 기본적인 구문입니다. 일반적으로 copy cp 명령과 매우 유사합니다.
# 2) 원격 호스트에서 로컬로 복사하는 경우
파일 복사 :
scp (options) UserName@SourceHost:SourceFilePath TargetFileName
또는, 파일을 다운로드하기 만하면됩니다.
scp (options) UserName@SourceHost:SourceFilePath
폴더 복사의 경우 (재귀 적으로) :
scp -r UserName@SourceHost:SourceDirectoryPath TargetFolderName
원격 호스트가 기본 포트 22가 아닌 다른 포트를 사용하는 경우 -P 옵션을 사용하는 명령에서 포트 번호를 명시 적으로 언급해야합니다.
# 3) 한 원격 컴퓨터에서 다른 원격 컴퓨터로 복사
scp (options) UserName@SourceHost:SourcePath UserName@TargetHost:TargetPath
한 원격 컴퓨터에서 다른 컴퓨터로 파일을 복사 할 때 트래픽은 컴퓨터를 통과하지 않습니다. 이 작업은 두 원격 서버간에 직접 수행됩니다.
# 4) 여러 파일 복사
localhost에서 원격 호스트로 여러 파일을 복사하려면 :
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
원격 호스트에서 localhost의 현재 디렉토리로 여러 파일을 복사하려면 :
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
SCP 명령과 함께 사용되는 옵션
SCP 명령과 함께 가장 일반적으로 사용되는 옵션은 다음과 같습니다.
- -씨 : C, 여기서 압축 활성화를 나타냅니다. 이 옵션을 사용하면 압축이 활성화되고 복사하는 동안 전송 속도가 빨라집니다. 소스에서 압축을 자동으로 활성화하고 대상에서 압축을 해제합니다.
- -씨: c는 암호를 의미합니다. 기본적으로 SCP는 파일 암호화에 'AES-128'을 사용합니다. 암호를 변경하려면 -c 옵션 다음에 암호 이름을 사용해야합니다.
- -i : i는 파일 식별 또는 개인 키를 나타냅니다. 일반적으로 키 기반 인증은 Linux 환경에서 선택됩니다. 따라서 -i 옵션을 사용하여 개인 키 파일 또는 ID 파일을 구체적으로 언급 할 수 있습니다.
- -엘: l은 대역폭 제한을 나타냅니다. 이 옵션을 통해 사용할 최대 대역폭을 설정할 수 있습니다. Kbits / s 단위입니다.
- -비: 이 옵션은 복사하는 동안 배치 모드를 사용하는 데 사용됩니다.
- -F : 이 옵션은 Linux 시스템에 연결하기 위해 다른 네트워크를 사용해야하는 상황에서 복사하는 동안 다른 ssh_config 파일을 사용하는 데 사용됩니다. 이러한 시나리오에서는 대체 사용자 별 SSH 구성 파일을 할당해야합니다.
- -P : 대상 호스트의 ssh 포트 번호가 기본 포트 번호 22와 다른 경우 -P 옵션을 사용하여 포트 번호를 구체적으로 언급해야합니다.
- -피: 이 옵션은 복사하는 동안 파일 권한, 수정 및 액세스 시간을 보존하는 데 사용됩니다.
- -큐: 이 옵션은 자동 모드에서 SCP 명령을 실행합니다. 진행률 표시기가 꺼지고 Linux 터미널 화면에 ssh의 전송 진행률, 경고 또는 진단 메시지가 표시되지 않습니다.
- -아르 자형: -r 옵션은 파일과 디렉토리를 재귀 적으로 복사하는 데 사용됩니다. 예를 들면 대상 컴퓨터에 전체 폴더 (폴더 내부 내용 포함)를 복사하려면 -r 옵션을 사용해야합니다.
- -S : 이 옵션은 연결에 사용할 프로그램을 지정하는 데 사용됩니다.
- -V: v는 verbose를 의미합니다. 이 옵션은 터미널 화면에서 SCP 명령 실행의 단계별 진행 상황을 보여줍니다. 디버깅에 정말 도움이됩니다.
SCP 명령 예
예제를 통해 SCP 명령을 사용하는 방법을 이해하겠습니다.
예 1 : 로컬에서 원격 호스트로 복사
scp -v lockfile.txt kaushapx@10.172.80.167: /home/cpf657/kaushapx/test1
위의 예에서
최고의 외장 하드 드라이브 복구 소프트웨어
- -v 옵션은 Linux 터미널에서이 명령의 출력 세부 사항을보기위한 자세한 옵션으로 사용됩니다. 자세한 출력을 사용하면 명령이 실행될 때 백그라운드에서 어떤 일이 발생하는지 정확히 알 수 있습니다. 이것은 디버그에 도움이됩니다.
- Lockfile.txt는 원격 호스트로 전송할 소스 파일 이름입니다.
- Kaushapx는 사용자 이름의 예입니다. 이 사용자 이름 계정을 사용하여 파일을 원격 호스트에 안전하게 복사합니다.
- 10.172.80.167은 파일을 전송하려는 대상 원격 호스트의 IP 예입니다.
- / home / cpf657 / kaushapx / test1은이 전송 된 파일을 저장할 절대 경로의 예입니다.
아래 스크린 샷은 위의 SCP 명령의 실행을 보여줍니다.
예 2 : 원격 호스트에서 로컬 시스템으로 복사하는 경우 :
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/test/parent/directory1/DemoFile.txt /home/tpf655/kaushapx
예 3 : 여러 파일을 원격 호스트에 복사하려면 :
scp DemoFile.txt log.xml kaushapx@10.172.80.167:/home/cpf657/kaushapx/test
예 4 : 두 원격 시스템에서 파일 복사 :
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
예 5 : 파일 및 디렉토리를 재귀 적으로 복사하려면 (-r 옵션 사용) :
localhost에‘test’라는 폴더가 있고이 폴더에는 4 개의 파일이 포함되어 있다고 가정 해 보겠습니다. 원격 호스트에있는‘test1’이라는 다른 폴더 안에 전체 폴더를 복사하고 싶습니다.
다음 명령을 사용합니다.
scp -r test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
예 6 : 압축을 활성화하여 복사 속도를 높이려면 (-C 옵션 사용) :
예제 5에서했던 것과 동일한 폴더를 전송하겠습니다. 이번에는 압축을 활성화합니다.
데이터웨어 하우징의 메타 데이터 란?
scp -r -C test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
예 7 : 복사 중 대역폭 제한 (-l 옵션 사용) :
동일한 옵션을 계속하겠습니다. 이번에는 -l 옵션을 사용하고 대역폭 (예 : 500)을 지정합니다. 여기에 넣은 대역폭은 Kbit / s입니다.
예 8 : 복사하는 동안 다른 ssh 포트 지정 (-P 옵션 사용) :
파일을 복사하는 원격 서버가 기본 포트 22가 아닌 다른 포트를 사용하는 경우 -P 옵션을 사용하여 SCP 명령에서 포트 번호를 명시 적으로 알려야합니다. 예를 들면 원격 서버의 ssh 포트가 2022이면 SCP 명령에서 -P 2022를 언급합니다.
scp -P 2022 console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
예 9 : 복사하는 동안 파일 권한, 수정 및 액세스 시간을 보존하려면 (-p 옵션 사용) :
scp -p console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
예 10 : 자동 모드에서 파일 복사 (-q 옵션 사용) :
scp -q console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
예 11 : 복사하는 동안 SCP에서 파일 식별 (-i 옵션 사용) :
위의 예에서 my_private_key.pem은 ID 파일 또는 개인 키 파일입니다.
예제 12 : SCP를 통해 복사하는 동안 다른 암호를 사용하는 경우 (-c 옵션 사용) :
scp -c 3des-cbc -r test1 kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
SCP 명령에 대한 FAQ
이 섹션에서는 SCP 명령에 대해 자주 묻는 질문을 다룰 것입니다.
Q # 1) SCP 명령은 무엇입니까?
대답: SCP는 Secure Copy Protocol을 의미합니다. SCP 명령을 사용하면 네트워크의 호스트간에 안전하게 파일 복사를 수행 할 수 있습니다. 데이터 전송을 위해 SSH의 메커니즘을 사용합니다. 키 또는 암호 기반 인증을 사용합니다.
Q # 2) Linux에서 SCP는 무엇을합니까?
대답: Linux에서 SCP 명령은 안전한 방식으로 서버간에 파일을 전송합니다. 원격 서버와 로컬 호스트 또는 두 원격 서버 간의 파일 복사 일 수 있습니다. SCP는 Linux에 사전 설치된 명령이며 단순성과 보안으로 유명합니다.
Q # 3) Linux에서 파일을 어떻게 SCP합니까?
답변 : 다음 명령 구문으로 파일을 SCP 할 수 있습니다.
scp (options) (username@)(source_host:)file1 (username@)(destination_host:)file2.
SCP 명령과 함께 많은 옵션을 사용할 수 있습니다. 예를 들면 -C는 압축, -c는 암호, -P는 포트, -I는 개인 키, -l은 제한, -r은 재귀 복사 등입니다.
Q # 4) 파일에 SCP를 어떻게 지정합니까?
대답: Q # 3에서 언급 한대로 SCP 명령을 사용하여 파일에 SCP를 지정할 수 있습니다.
Q # 5) SCP는 복사 또는 이동합니까?
대답: SCP 명령은 소스에서 대상으로 파일을 복사합니다. 따라서 SCP 이후에 파일은 두 호스트 모두에 존재합니다.
Q # 6) 디렉토리에 SCP를 사용할 수 있습니까?
대답: 예, 디렉토리에 SCP를 사용할 수 있습니다. 내용과 함께 전체 디렉토리를 복사하려면 -r 옵션을 사용해야합니다.
다음은 로컬 호스트에서 원격 호스트로 디렉토리를 복사하기위한 SCP 명령 구문입니다.
scp -r localhost_path_to_directory username@target_server_ip:/path_to_target_directory/
Q # 7) 디렉토리의 모든 파일에 SCP를 어떻게 사용합니까?
대답: 디렉터리의 모든 파일에서 SCP를 사용하려면 디렉터리 경로와 함께 *를 추가해야합니다.
scp -r localhost_path_to_directory/* username@target_server_ip:/path_to_target_directory/
이렇게하면 로컬 디렉터리 내의 모든 파일이 원격 디렉터리로 복사됩니다.
Q # 8) Windows에서 SCP를 사용할 수 있습니까?
대답: 예, Windows에서 SCP를 사용할 수 있습니다. 그러나 Linux 및 Mac과 달리 Windows에서는 사전 다운로드되지 않으므로 Windows의 경우 별도로 SCP 소프트웨어를 설치해야합니다.
Windows 용 SCP (Putty SCP (PSCP)라고하는 소프트웨어)를 포함하는 Putty를 다운로드하거나 WinSCP (Windows Secure Copy)를 다운로드 할 수 있습니다. PSCP 클라이언트는 Windows 명령 프롬프트에서 직접 실행됩니다. Windows에서 SCP를 사용하기위한 다른 소프트웨어도 있습니다. .
Q # 9) 여러 파일에 SCP를 어떻게 사용하나요?
대답: SCP를 사용하여 localhost에서 원격 호스트로 여러 파일을 복사하는 경우 :
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
SCP를 사용하여 원격 호스트에서 localhost의 현재 디렉토리로 여러 파일을 복사하는 경우 :
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
Q # 10) SCP와 SFTP의 차이점은 무엇입니까?
대답: SCP는 보안 복사 프로토콜입니다. SFTP는 보안 파일 전송 프로토콜입니다. 둘 다 TCP 포트 22를 사용하고 SSH 메커니즘에서 실행됩니다. 그러나 사양과 기능이 다릅니다.
SCP는 데이터 만 전송하는 반면 SFTP는 파일 전송 외에 파일 액세스 및 파일 관리 기능도 수행합니다. SFTP를 사용하면 원격 디렉토리 나열 또는 파일 삭제와 같은 작업을 수행 할 수 있습니다. 그러나 SCP는 서버 간의 파일 및 디렉토리 복사 만 허용합니다.
SCP의 파일 전송 속도는 파일 전송에 더 효율적인 알고리즘을 사용하기 때문에 SFTP보다 빠릅니다.
.eps 파일을 여는 방법
SFTP에서는 명령 줄 클라이언트에서 중단 된 파일 전송을 재개 할 수 있습니다. 그러나 SCP에는이 기능이 없습니다.
SFTP는 GUI 구성 요소를 제공하지만 SCP에는 해당 구성 요소가 없습니다.
Q # 11) 파일을 안전하게 복사하기위한 Windows의 SCP 명령은 무엇입니까?
대답: Windows 명령 프롬프트를 열고 아래 명령을 입력하여 Windows 로컬 컴퓨터에서 서버로 안전하게 파일을 복사합니다 (Linux 서버 일 수 있음).
pscp 파일 경로 userid @ target_server_ip : target_path
예: pscp c : desktop sample.txt userxyz@192.162.x.x : /tmp/foo/sample.txt
이 명령을 실행하려면 PSCP가 설치되어 있어야합니다.
Q # 12) SCP는 안전한가요?
대답: 예, SCP는 안전합니다. 데이터 전송을 위해 SSH (Secure Shell Protocol) 메커니즘을 사용하므로 SSH가 제공하는 보안의 이점을 얻습니다. 전송중인 데이터는 기밀로 유지되며 신뢰성도 보장됩니다.
결론
이 자습서에서는 FTP 세션을 시작하거나 원격 시스템에 명시 적으로 로그인하지 않고 두 원격 호스트간에 또는 로컬 호스트와 원격 호스트간에 파일을 안전하게 복사하기 위해 SCP 명령을 사용하는 방법을 살펴 보았습니다.
SCP는 데이터 복사를 위해 SSH 메커니즘을 사용하므로 전송중인 데이터가 암호화되고 보호됩니다. 인증을 위해 암호 또는 키가 필요합니다. RCP (원격 복사 프로토콜) 또는 FTP (파일 전송 프로토콜)와 달리 SCP는 네트워크에서 스누핑을 보호하기 위해 시스템간에 교환되는 파일과 암호를 모두 암호화합니다.