[5주차 목표]
1. Flask 프레임워크를 활용해서 API를 만들 수 있다.
2. '마이 페이보릿 무비스타'를 완성한다.
3. EC2에 내 프로젝트를 올리고, 자랑한다!
오픈소스 FTP 클라이언트 : FTP, SFTP, FTPS를 지원한다.
FTP (File Transfer Protocol)은 인터넷상에서 파일 전송 시 사용되는 프로토콜의 약자이다. 우리가 인터넷 사용 시 주로 사용하는 WEB에서는 FTP를 사용하지 않지만 네트워크 공유 서버나 웹서버, 파일 서버 등에는 FTP를 통해 파일을 주고 받고 있다.
따라서 파일 전송시에는 FTP 클라이언트 프로그램을 사용해야 FTP 서버에 접속이 가능하다.
Filezilla
는 오픈 소스 기반으로 모든 소스 코드가 공개되어 있다. 윈도우뿐만 아니라 맥, 리눅스에서도 사용 가능하다.
타 FTP 클라이언트보다 빠르고 손쉽게 사용할 수 있도록 GUI가 구성되어 있다. FTP 뿐만 아니라 FTPS, SFTP 등을 지원한다.
참고 : https://www.omdroid.com/364
Protocol (프로토콜)
디바이스 간의 데이터를 교환하기 위한 통신 규약이다.
인터넷을 통한 파일 송수신 만을 위해 고안된 서비스 (프로토콜)
이다. WWW 방식보다 파일을 빠른 속도로 한꺼번에 주고 받을 수 있는다는 것이 FTP의 가장 큰 장점이다.
옛날에는 사용했으나 지금은 보안이 안 좋아서 실무에서는 사용하지 않는다.
FTP 서비스를 제공하는 서버와 여기에 접속하는 클라이언트 사이에 두 개의 연결이 생성되는데, 하나는 데이터 전송을 제어하기 위하여 신호를 주고 받기 위함 이고 (21번 포트), 다른 하나는 실제 데이터 (파일) 전송에 사용(20번 포트) 된다. 이를 테면, FTP 서버에 접속할 때 입력하는 사용자 계정 및 암호 등의 정보나 파일 전송 명령 및 결과 등은 데이터 제어용 연결에서, 이후 실제 파일 송수신 작업(올리기, 내려받기)은 데이터 전송 연결에서 처리되는 것이다. FTP 클라이언트 프로그램은 여러 파일을 연속으로 송수신해야 하기에, 서버와의 지속적인 응답 메세지 전송을 통해 연결 상태 (세션)을 유지한다.
데이터를 전달하는 방식에 따라 active mode와 passive mode가 있다.
FTP는 인터넷 익스플로러 등의 웹 브라우저나 윈도우 탐색기 등으로도 사용할 수 있지만 FTP 클라이언트 프로그램을 통해 접속하는 것이 편하다.
FTP 클라이언트 프로그램을 사용하는 경우, 접속할 서버 사이트의 IP 주소 또는 인터넷 주소, 승인된 사용자 계정 및 암호를 입력하고 접속하면 최상위 폴터 (디렉토리)가 출력된다. 이후부터는 윈도우 탐색기를 사용하듯 폴더/파일을 선택, 자신의 PC내 원하는 폴더에 내려받거나 FTP 서버로 올릴 수 있다.
이 외에도 명령 프로프트를 통해서도 FTP 접속이 가능하다. 클라이언트 프로그램보다는 사용이 어렵지만 어떤 운영체제에서도 사용할 수 있다는 장점이 있다.
FTP의 확장으로, 기존의 FTP에 전송 계층 보안 (TLS)과 보안 소켓 계층 (SSL) 암호화 프로코톨에 대한 지원이 추가되었다. TLS/SSL을 거친다는 의미는 공개키 암호화 방식을 이용하여 통신 라인을 거쳐가는 21번, 20번 포트를 안전하게 암호화한다는 의미이다.
공개키 암호화 방식은 서버 공개키로 암호화하면 서버가 가진 비공개 개인키로만 풀 수 있다. 하는 대전제로 공개키가 노출되어도 문제가 업시 때문에 할 수 있는 암호화 방식이다. 서버가 건네주는 보자기 (공개키)로 클라이언트가 감싸서 건네주면 그 보자기의 내용물은 서버만 열어볼 수 있다는 의미이다.
SFTP는 ssh의 파일 전송 버전이라 생각하면 된다. FTP 이름을 가지고 있지만 ssh와 같은 방식을 사용하니 ssh에 대해 알아야하고 아래에서 설명을 추가하였다.
SFTP는 SSH 기반으로 동작하는 FTP가 아니며 국제 인터넷 표준화 기구 (IETF) SECSH 워킹 그룹에 의해 처음부터 설계된 새로운 프로토콜이다. (SFTP는 SSH 확장 프로토콜이다)
실무에서는 sftp와 ssh만 이용한다. ssh (sftp)에서 터널링하는 방법은 ftps에서의 방식과 유사하다.
Secure SHell의 약자로 원격지에 있는 컴퓨터를 안전하게 제어하기 위한 프로토콜 또는 이 프로토콜을 사용하는 프로그램들을 의미한다. SSH 클라이언트와 SSH 서버의 관계로 상호작용하면서 SSH 서버가 설치된 운영체제를 제어한다. 클라이언트와 서버 사이에는 강력한 암호화 방법을 통해서 연결되어 있기 때문에 데이터를 중간에서 가로채도 해석할 수 없는 암호화된 문자만이 노출된다. 지금까지는 Telnet을 주로 사용하였는데 이것을 대체하기 위한 통신 방법이다.
참고 : https://brunch.co.kr/@sangjinkang/52
리눅스와 Mac과 같은 Unix 계열의 운영체제는 기본적으로 SSH 클라이언트가 설치되어 있기 때문에 SSH를 이용하기 위해서 특별한 클라이언트가 필요하지 않다. 하지만 윈도우 운영체제에는 SSH 클라이언트가 설치되어 있지 않아서 SSH 클라이언트를 설치해야 윈도우에서 Unix 계열의 운영체제를 제어할 수 있다. 대표적인 SSH 클라이언트는 아래와 같은 것들이 있다.
git bash
프로그램을 이용함SSH는 Unix 계열의 운영체제를 원격에서 제어하기 위한 방법이다. 그렇기 때문에 원격지에 있는 윈도우 운영체제를 SSH로 제어하는 것은 일반적이지 않다. 윈도우에는 클라이언트 운영체제로 사용할 수 있을 뿐이다. 유닉스 계열의 운영체제에서는 OpenSSH가 가장 많이 사용된다. OpenSSH는 SSH 클라이언트와 서버를 포함한다. Mac은 SSH 클라이언트와 서버가 이미 설치되어 있기 때문에 SSH를 이용하기 위해서 특별한 조치는 필요하지 않다.
참고 : https://nhj12311.tistory.com/76
https://opentutorials.org/module/432/3738