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이다.
다운로드 및 설치가 완료되면 위 썸네일과 같은 프로그램이 실행되는데, 상단의 호스트부터 차례로 라즈베리파이의 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 |