FTP는 File Transfer Protocol의 약자로, 파일 전송을 위해 만들어진 규약이다.
물론 아파치 서버에서 파일 업로드 / 다운로드 페이지를 만들어 관리할 수도 있지만, 다중 전송을 필요로 하거나 규칙적인 관리를 위해서는 필수라고 할 수 있다.
라즈베리파이에서 쓰이는 ftp 프로그램으로는 크게 두 가지가 있다.
- proftpd
- vsftp
사실 개인이 쓰면서 큰 차이를 느끼긴 힘들 것이다. 나는 처음 써본게 proftpd였고, 그 다음 구축할 때 vsftp로 설치했으나 어떤 부분에서 잘못됐는지 루트 폴더(최초 접속 폴더)부터 꼬이기 시작하면서 여러 부분에서 장애가 발생해 결국 다시 proftpd로 넘어왔다.
그 때의 트라우마 아닌 트라우마로 proftpd만 고집하게 됐다.
우선 패키지 업데이트를 실행한 후 아래 명령을 실행하자.
sudo apt-get install proftpd
설치가 완료되면 바로 proftpd가 서비스에 등록되어 실행되기 때문에 서비스를 중지해야 한다.
sudo service proftpd stop
아래 경로의 설정 파일을 확인해보자.
sudo nano /etc/proftpd/proftpd.conf
여기서 수정하고자 하는 부분은 루트폴더, 포트, 패시브 모드이다.
패시브 모드는, ftp 연결 방법 중, 액티브 모드와 패시브 모드가 있는데, 패시브 모드로 설정해주자. 차이점은 검색하면 너무 많이 나오니 패스한다.
Ctrl + W (검색)으로 DefaultRoot를 찾으면 초기 설정 경로가 나오는데, 우리는 외장하드를 마운트한 경로인 /var/www/html로 설정해준다.
DefaultRoot /var/www/html/
두번째로 포트는, 데이터베이스와 마찬가지로 기본 경로 혹은 포트로 둘 경우 너무 많은 무작위 공격에 노출될 수 있다.
proftpd는 OS의 계정을 따르기 때문에 라즈베리파이의 계정 혹은 FTP의 계정이 뚫릴 경우 같이 뚫릴 수가 있으므로 포트 번호를 수정해준다.
Port 20021 #(임의 포트 번호)
마지막으로 패시브 모드는 PassivePorts를 검색하면 아래 문장이 나오는데, 앞의 #를 제거해 주석을 풀어준다.
# PassivePorts 49152 65534
FTP서버의 설정이 끝났으므로 ftp서버를 다시 시작한 후 외부 환경에서 접속을 시도해본다.
sudo service proftpd start
Windows 기준 가장 널리 쓰이는 ftp클라이언트 프로그램은 Filezilla이다.
Download FileZilla Client for Windows (64bit x86)
Download FileZilla Client for Windows (64bit x86) The latest stable version of FileZilla Client is 3.60.2 Please select the file appropriate for your platform below. Please select your edition of FileZilla Client FileZilla FileZilla with manual FileZilla P
filezilla-project.org
다운로드 및 설치가 완료되면 위 썸네일과 같은 프로그램이 실행되는데, 상단의 호스트부터 차례로 라즈베리파이의 ip주소 혹은 DNS주소, 라즈베리파이의 계정 이름 및 패스워드, conf에서 설정한 포트 주소를 넣고 빠른 연결을 클릭한다.
(기본 포트 그대로 둔 경우 생략 가능)
상태: *************** 주소 해석
상태: ***.***.***.***:**** 에 연결...
상태: 연결 수립, 환영 메시지를 기다림...
상태: 보안되지 않은 서버입니다. TLS를 통한 FTP를 지원하지 않습니다.
상태: 서버에서 비 ASCII 문자를 지원하지 않습니다.
상태: 로그인
상태: 디렉터리 목록 조회...
상태: "/" 디렉터리 목록 조회 성공
위 상태창에서 "/" 디렉터리 목록 조회 성공은 라즈베리파이의 /폴더가 아닌 DefaultRoot에서 설정한 폴더다.
접속이 완료된 후 아래 우측 창에 라즈베리파이의 /var/www/html/의 외장하드 파일 목록이 뜬다면 접속이 성공한 것이다.
마지막으로 해당 디렉토리에 파일을 넣을 때 Permission denied가 출력될 수 있다.
이는 권한 문제인데, /var/www/html폴더에 파일을 쓸 수 있는 권한을 주지 않았기 때문이다.
터미널에서 다음 명령을 실행해주자
sudo chmod 777 /var/www/html
html폴더에 누구나 읽고 쓸 수 있도록 권한을 설정하는 명령이다.
ftp의 설정과는 무관하기 때문에 ftp서비스를 재시작할 필요없이 바로 파일을 업로드해보면 정상적으로 올라가는 것을 볼 수 있다.
'라즈베리파이' 카테고리의 다른 글
라즈베리파이 - SWAP 메모리 (0) | 2022.08.04 |
---|---|
라즈베리파이 - HTTPS 우회 (0) | 2022.08.04 |
라즈베리파이 - 외장하드 연결 (0) | 2022.08.04 |
라즈베리파이 - MariaDB 설치 (0) | 2022.08.04 |
라즈베리파이 - php 설치 (0) | 2022.08.04 |