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

Last Updated on 2월 24, 2021 by 태랑(정현호)



로컬 호스트와 원격호스트간에 파일을 전송하는 수단



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 된다고 합니다.


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


더 이상 사용되지 않는 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'




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




연관된 글

 

 

답글 남기기