알아두면 좋은 IT 지식

SFTP? FTP? active mode? passive mode?

uutopia 2022. 1. 28. 13:46

SFTP

SSH(Secure SHell)프로토콜을 사용하며 ftp와 비슷한 방식으로 데이터를 주고받는다.

 

동작 과정

  1. client가 server의 22번 포트로 연결 요청 (client:????? -> server:22)
  2. client가 server의 22번 포트로 연결 후 데이터 주고 받음

 

사용 예 - CLIENT

$ sftp 10.0.2.15
username@10.0.2.15's password:
Connected to 10.0.2.15.
sftp> get test.txt
Fetching /home/username/test.txt to test.txt
/home/username/test.txt                            100%    5     2.8KB/s   00:00

 

사용 예 - SERVER

$ netstat -an | grep '10.0.2.15:22'
tcp        0      0 10.0.2.15:22            10.0.2.16:39920         ESTABLISHED

 

 

세션 설정

ssh와 같은 세션을 사용하므로 ssh설정파일에서 최대 세션 수를 설정할 수 있다.

/etc/ssh/sshd_config 파일 수정

 

...
MaxSessions 10
...

 

 

FTP(s)

FTP(프로토콜을 사용하며 접속용 포트와 데이터용 포트를 따로 사용

FTPS는 FTP서버에 TLS(SSL)가 설치되어 통신간 암호화 사용

 

active mode 동작 과정

  1. client가 server의 21번 포트로 연결 요청 (client:????? -> server:21)
  2. server가 20번 포트로 client에 연결 후 데이터 주고 받음 (server:20 -> client:?????)

 

passive mode 동작 과정

  1. client가 server의 21번 포트로 연결 요청 (client:????? -> server:21)
  2. client가 server가 제공한 random포트로 연결 후 데이터 주고 받음 (client:????? -> server:?????)

 

사용 예 - CLIENT

anylink@lsw:~$ ftp 10.0.2.15
Connected to 10.0.2.15.
220 (vsFTPd 3.0.2)
Name (10.0.2.15:username): username
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get
(remote-file) test.txt
(local-file) test.txt
local: test.txt remote: test.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.txt (419430400 bytes).
226 Transfer complete.
419430400 bytes received in 7.24 secs (55.2582 MB/s)​

 

 

사용 예 - SERVER

$ netstat -an | grep -E '10.0.2.15:21|10.0.2.15:20'
tcp6       0      0 10.0.2.15:21            10.0.2.16:51766         ESTABLISHED
tcp6       0 1399080 10.0.2.15:20            10.0.2.16:51211         ESTABLISHED

 

 

 

 

※ SFTP와 FTP는 동작방식이나 사용법은 비슷하지만 전혀 다른 프로토콜을 사용하므로 주의해야 한다.

※ FTPS는 FTP에 SSL이 적용된 프로토콜로 역시 SFTP와 전혀 다른 프로토콜이다.