SCP 지원 중단 - rsync,sftp 로 대체 사용 - SCP Deprecated - use the rsync instead of scp

Share

Last Updated on 3월 7, 2024 by Jade(정현호)

원격호스트 간의 파일을 전송하는 수단

SCP 는 SSH 프로토콜 기반에서 파일을 로컬 호스트에서 원격 호스트로 혹은 반대의 경우로 파일을 복사하는 명령어입니다.

이전에 rcp 라는 명령어를 SSH 기반으로 안전하게 사용하기 위한 명령어로 대체하여 사용되고 있습니다.

하지만 실상은 rcp 와 scp 간에 이름만 유사한 것은 아닙니다 기본 프로토콜의 대부분도 동일(유사)합니다

이전의 rcp 와 마찬가지로 scp 는 가능한 한 일반 cp 명령과 매우 유사하게 설계되었습니다.
비교적 간단하고 스크립팅 가능한 명령어 인터페이스가 있어서 재귀적 호출 및 다중파일 복사, 스크립트에서 사용 등 다양하게 사용되어져 왔습니다.

그러나 예상과 달리 SSH를 사용한 보안환경의 접속과 파일 복사를 하는 환경임에도 일부 상황에서는 실제 보안 수준이 예상 보다 낮게 되는 상황이 발생될 수 있게 되었습니다.

예를 들어 CVE-2019-6111 로 알려진 취약성에 대해서는 OpenSSH 8.0 에서 Fix 되면서 릴리즈 된 사례가 있습니다.


OpenSSH 8.0 에서 해당문제를 원격 측의 파일 이름을 실제로 요청한 파일 이름과 비교하여 이 문제를 해결하였습니다.

다만 릴리스 발표에서는 scp 프로토콜이 "오래되고 융통성이 없으며 쉽게 수정되지 않음 " 이라고 표현되었고
 scp 에서 마이그레이션하는 것이 좋겠다 라고 하였습니다.

결론적으로 scp 의 알고리즘 혹은 프로토콜 자체가 rcp 시대의 오래전에 작성된 내용으로 수정이나 개선하기 어렵다 라는 이유로 depreacted 된다고 합니다.

그렇다면 다음 질문은 자연스럽게 나옵니다.

Q) 더 이상 사용되지 않는 scp 명령을 대체할 수 있는 것은 무엇입니까?

그 질문에 대한 일반적인 대답은 sftp 또는 rsync 라고 할 수 있습니다.
        

rsync,sftp 사용법

일반적인 호스트간 파일 복사
$ scp foo.txt me@server:/home/me/


replace to rsync
$ rsync --progress foo.txt me@server:/home/me/


디렉토리 복사
$ scp -r bar/ me@server:/home/me/


replace to rsync
$ rsync -r --progress bar/ me@server:/home/me/


22번 포트가 아닌 다른 포트 사용시
$ scp -P 8022 foo.txt me@server:/home/me/


replace to rsync
$ rsync --progress -e 'ssh -p 8022' foo.txt me@server:/home/me/


.ssh/config 파일에 호스트 정보와 포트정보 입력시 위의 과정은 생략하고 일반적인 복사방법으로 사용하면 됩니다.

$ rsync --progress foo.txt target_host:/home/me/


sftp 를 이용한 one line command는 아래와 같이 실행하면 됩니다.

sftp me@server: <<< $'put test.txt(파일명)'


rsync 사용시 --progress 까지는 공통으로 사용하게 됩니다
그래서 .bash_profile 이나 .profile 에 alias 를 생성해서 사용하는 것도 한가지 방법입니다.

alias rsync='rsync --progress'


Reference Link
lwn.net/SubscriberLink/ae41b27bc20699ad
fedoramagazine.org/scp-to-rsync


연관된 다른 글

 

 

 

 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x