본문 바로가기
공부정리

[네트워크] SSH 와 SFTP (feat. SCP vs SFTP)

by 에드박 2021. 12. 2.

SCP 와 SFTP 둘 다 파일을 전송할 수 있는 프로토콜인데 무슨 차이가 있는지 궁금해서 학습을 시작했습니다 :)


SSH란?

SSH(Secure SHell)은 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜 입니다.

기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화가 이루어지지않아 계정 정보가 탈취될 위험이 높으므로 암호화를 추가해서 나온것이 SSH 입니다.

  • 강력한 인증 방법
  • 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공
  • 기본적으로 22번 포트를 사용
  • SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보입니다.

SSH의 주요기능

  • 보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 안전하게 제공.
    • rsh(Remote SHell) : 컴퓨터 네트워크의 다른 컴퓨터에서 다른 사용자로 셸 명령어를 실행할 수 있는 커맨드 라인 프로그램
    • rcp(Remote Copy Protocol) : Unix 운영 체제에서 시스템 간에 하나 이상의 파일을 원격으로 복사하는 데 사용되는 명령. 파일은 TCP/IP 프로토콜을 통해 전송됩니다. 원격으로 파일을 복사한다는 점을 제외하곤 cp 명령과 비슷합니다.
    • rlogin(Remote login) : TCP/IP 프로토콜을 통해 통신 사용자가 네트워크를 통해 다른 호스트에 로그인할 수 있도록 유닉스같은 컴퓨터 운영 체제를위한 소프트웨어 유틸리티이다.
    • rexec : 지정한 원격 호스트에 실행할 명령을 입력하여, 로컬 시스템에서 실행한 명령의 결과를 볼 수 있는 명령어
    • telnet : 인터넷이나 로콜 영역 네트워크 연결에 쓰이는 네트워크 프로토콜
    • ftp(File Transfer Protocol) : TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜
  • IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공.
  • X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩을 제공
    • X11 포워딩 이용하면 복잡한 포트 포워딩 설정 없이 원격의 X11 응용 프로그램들을 안전한 암호화 터널을 통해 사용자 PC에서 사용할 수 있습니다. 

SSH Key (SSH 키)

서버에 접속할 때 비밀번호나 호스트 인증방식 대신 Key를 제출하는 방식입니다. 비밀번호보다 높은 수준의 보안 요건을 필요로 할 때 사용합니다.

 

SSH 키(Key)는 공개키(public key)와 비공개키(private key)로 이루어지는데 이 두개의 관계를 이해하는 것이 SSH Key를 이해하는데 핵심입니다. 키를 생성하면 공개키와 비공개키가 만들어집니다. 이 중에 비공개키는 서버에 위치해야 하고, 공개키는 클라이언트에 위치해야 합니다. SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키와 원격 머신의 공개키를 비교해서 둘이 일치하는지를 확인합니다.

 

정리

  • SSH 키는 공개키 비공개키로 이루어짐 (두개가 한 쌍, 키페어 라고 부름)
  • 공개키는 접속하고자 하는 서버에 전달, 비공개키는 원격 접속을 시도하는 클라이언트가 가지고 있습니다.
  • 클라이언트가 공개키로 서버에 SSH 접속을 시도하면 공개키와 비공개키로 인증을 거친 후 인증이 완료되면 접속이 가능합니다.

더 자세한 인증 과정은 추후에 다른 글로 정리하도록 하겠습니다!

지금은 이 글을 참고해주세요!

공개키 인증을 위한 키 페어를 만들기 위해 아래의 명령어를 사용할 수 있습니다.
ssh-keygen - 공개 키 인증을 위한 키 쌍 생성

ex) ssh-keygen -t rsa
-> rsa는 암호화 방식을 의미합니다.

 


SFTP (SSH File Transfer Protocol)

SFTP란?

네트워크를 통한 파일 전송을 허용하는 SSH 프로토콜의 확장이라고 합니다.

 

기존의 FTP (File Transfer Protocol) 방식은 보안적인 취약점이 있기때문에 중요한 파일을 전송하기는 위험했습니다.

파일 전송 시 SSH 방식을 사용해서 안전하게 암호화된 구간에서 파일을 전송할 수 있도록 구현한 것이 SFTP 입니다.

 

SFTP 의 장점

  • SFTP는 하나의 연결만 필요하며 데이터 연결이 필요없습니다.
  • 연결이 안전하게 보호됩니다. (SSH 방식)
  • SFTP는 기계가 읽을 수 있고 균일한 디렉터리 목록을 자랑합니다.
  • 프로토콜에서 제공하는 추가 기능에는 파일 잠금, 특성 조작, 권한 작업 및 향상된 기능이 포함됩니다.

SFTP 의 단점

  • SSH 키의 유효성 검사 및 관리가 복잡하다
  • 이 프로토콜은 바이너리 통신에 관여하는데, 이는 사람이 읽을 때 "있는 그대로" 기록할 수 없다는걸 말합니다.
  • SFTP 구성 "표준"은 서로 다른 공급업체의 소프트웨어 타이틀 간 호환성 문제를 야기할 수 많은 SFTP 구성 표준이 있습니다.
  • SFTP는 서버 대 서버 복사 외에 재귀 디렉터리에 대한 제거 작업을 제공하지 않습니다.

SCP vs SFTP

 

  SCP SFTP
기능 파일 전송만 허용하는 간단한 프로토콜 원격 파일 관리를 위한 광범위한 작업을 제공
원격으로 파일 제거, 중단 된 전송 재개 등의 추가기능을 가짐
플랫폼 대부분 Unix 플랫폼만 사용함 여러 플랫폼에서 사용할 수 있음
속도 SFTP 보다 빠르다 패킷의 암호화 및 일치를 기다려야 하므로 SCP보다 느림
파일 전송 용량 4GB 이상의 파일 전송 불가 4GB 이상의 파일도 전송가능 (대용량 전송이 가능)
세션 유지 파일 전송 취소시 세션을 취소해야함 파일 전송 취소시 세션을 유지할 수 있음
전송 재개 가능 전송 재개 불가능 전송 재개 가능

 


참고문서

- https://velog.io/@hyeseong-dev/%EB%A6%AC%EB%88%85%EC%8A%A4-ssh%EB%9E%80

- https://nhj12311.tistory.com/76

- https://www.msp360.com/resources/blog/sftp-vs-ftps/

 

댓글