Skip to content

SSH File Transfer Protocol

컴퓨팅에서 SSH 파일 전송 프로토콜(SSH File Transfer Protocol) 또는 보안 파일 전송 프로토콜(Secure File Transfer Protocol, SFTP)은 신뢰할 수 있는 데이터 스트림을 통해 파일 접근, 파일 전송, 파일 관리를 제공하는 네트워크 프로토콜이다. 국제 인터넷 표준화 기구(IETF)가 보안 파일 전송 기능을 제공할 목적으로 시큐어 셸 프로토콜 (SSH) 버전 2.0의 확장으로 설계하였다. IETF 인터넷 초안에 따르면 이 프로토콜이 SSH-2 프로토콜의 문맥 안에 기술되어 있지만 전송 계층 보안(TLS)를 통하는 보안 파일 전송 프로그램이나 VPN 응용 프로그램의 관리 정보 전송과 같은 다른 수많은 응용 프로그램들에도 사용할 수 있다고 언급되어 있다.

이 프로토콜은 SSH와 같은 보안 채널을 통해 수행되는데, 이 말은 서버가 이미 클라이언트와 인증이 되어 있으면서, 클라이언트 사용자 증명을 프로토콜에 이용할 수 있는 상태여야 한다는 것을 뜻한다.

기능

파일 전송만을 다루는 SCP 프로토콜과 비교하면, SFTP 프로토콜은 원격 파일 시스템 프로토콜과 같이 원격 파일에 어느 정도의 조작을 허용한다. SFTP 클라이언트의 추가 기능에는 중단된 전송 재개, 디렉터리 나열, 원격 파일 제거를 포함한다.

SFTP는 SCP 보다 더 플랫폼 독립적인 경향이 강하다. 이를테면 SCP를 이용하면 클라이언트에서 규정한 와일드카드의 확장은 서버에 달려있지만, SFTP의 설계는 이러한 문제를 회피한다. SCP가 유닉스 플랫폼에 주로 구현되어 있는 반면, SFTP 서버들은 대부분의 플랫폼에서 흔히 이용이 가능하다.

SFTP는 SSH 기반으로 동작하는 FTP이 아니며 국제 인터넷 표준화 기구(IETF) SECSH 워킹 그룹에 의해 처음부터 설계된 새로운 프로토콜이다. 단순 파일 전송 프로토콜과 혼동되기도 한다.

이 프로토콜 그 자체는 인증과 보안을 제공하지 않는다. 기반 프로토콜이 이를 보안해 줄 것으로 예측할 뿐이다. SFTP는 SSH 프로토콜 버전 2 구현체의 하위 시스템으로 자주 사용되며, 이는 같은 워킹 그룹에 의해 설계되고 있다. 그러나 SSH-1 및 이를 지원하는 구현체들, 또는 다른 데이터 스트림을 통해서도 수행이 가능하다. SSH-1을 통해 SFTP 서버를 구동하는 일은 플랫폼 독립적이지 않은데, 그 까닭은 SSH-1은 하위 시스템의 개념을 지원하지 않기 때문이다. SFTP 클라이언트가 SSH-1 서버에 접속하려 한다면 그 클라이언트는 서버 측 SFTP 서버 바이너리의 경로를 인지하고 있어야 한다.

업로드된 파일들은 타임스탬프처럼 자신들의 기본 특성과 연결될 수 있다. 이는 일반적인 FTP 프로토콜 이상의 이점이 있는데, 이는 별도의 도움 없이 원래의 날짜/타임스탬프 특성을 포함하기 위해 업로드를 제공할 필요가 없음을 뜻한다.

디렉토리 재귀적으로 복사

put 과 같은 명령에 -r 옵션을 사용하면 된다.

속도 제한

-l limit 옵션을 사용하면 된다. 단위는 Kbps/s 이다 !!!! (KB/s 가 아니다)

  • 초당 1MB/s 를 원한다면 1 * 1024 * 8 = -l 8192 로 입력하면 된다.
  • 초당 2MB/s 를 원한다면 2 * 1024 * 8 = -l 16384 로 입력하면 된다.

Private Key File Path

개인키 파일 경로를 직접 지정해 줘야 할 경우 -i 옵션을 사용한다.

sftp -i /path/to/private/keyfile ...

또는 -o 옵션을 사용하면 된다.

sftp -oIdentityFile=/path/to/private/keyfile ...

See also

Favorite site