Server/Ubuntu

[Ubuntu] Ubuntu 22.04.1 LTS에 FTP 서버 구축

aeeazip 2023. 2. 10. 13:16

1. FTP에 대하여


 

FTP = 파일 전송 프로토콜 (Port = 20 : 데이터 전송 / 21 : 제어)

= 한 컴퓨터에서 다른 컴퓨터로 파일을 쉽게 이동할 수 있게 해주는 프로그램

 

1. 인터넷을 통한 파일 송수신을 고안한 서비스

→ WWW 방식보다 빠른 속도로 한꺼번에 파일을 주고 받을 수 있다.

 

2. 명령어 기반의 통신 서비스

→ 별도의 FTP 클라이언트 프로그램 사용이 필요

 

 

 

 

2. Ubuntu 22.04에 FTP 설치


 

root@seven: ~$ sudo apt update
root@seven: ~$ sudo apt upgrade
→ ftp 설치 전 apt 최신화 작업 필요 (프로그램 설치 전 준비 과정)
 
root@seven: ~$ sudo apt-get install vsftpd
→ vsftpd 프로그램 설치되어 서비스에 등록 및 실행
 
root@seven: ~$ sudo systemctl status vsftpd       // sudo service vsftpd status 동일
→ 설치 된 vsftpd의 실행 상태를 확인
active(running) 메시지를 확인했다면 현재 실행 중!
 
root@seven: ~$ netstat -natp | grep ftp
→ vsftpd가 실행중이며 TCP 21번 포트로 LISTEN 중이라는 것을 알 수 있다

 

# vi /etc/vsftpd.conf    // 환경설정 파일의 수정이 필요

listen=YES
listen_ipv6=NO
anonymous_enable=NO
port_enable=NO
pasv_enable=YES
local_enable=YES
write_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
ftpd_banner=Welcome to My FTP Server!
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
listen_port=21
pasv_min_port=60020
pasv_max_port=60030
#utf8_filesystem=YES
#local_umask=022

 

root@seven: ~$ service vsftpd restart
→ 설정파일 적용을 위해 서비스를 재시작한다

 

 

 

 

3. 윈도우에서 원격접속


 

FTP 윈도우로 연결 및 실행 방법
C:\Windows\system32> ftp
→ ftp로 접속
 
ftp > open 192.168.131.119 21
→ Ubuntu 서버 IP  21(FTP Port 번호) 입력
→ 192.168.131.119에 연결되었습니다. 출력
 
사용자(192.168.131.119:(none)) :
→ 로그인할 계정을 묻는다
→ seven7 입력
 
password:
→ 계정 비밀번호를 묻는다
→ seven7 입력
230 Login Successful 출력!! (연결 성공 의미)
 
ftp > ls
→ ls 명령어를 통해 현재 경로에 속한 파일들을 확인 O

 

ERROR 발생
로그인 성공 시 > 200 PORT command successful 출력
실패시 500 OOPS : could not open chroot() list file:/etc/vsftpd/chroot_list 오류 발생
 
500 OOPS : 인증 오류를 의미!!
/etc/vsftpd/chroot_list 에 계정명을 추가해주지 않아서 발생한 오류인데
우리팀은 vi /etc/vsftpd.chroot_list 라는 잘못된 경로에 계정명을 추가했기 때문에 500 오류 발생

 

 

 

 

4. FTP로 원격에서 파일 전송


윈도우 로컬 PC에 FTPTest.txt 파일을 준비하고 Ubuntu 서버 PC로 전송되는 것을 테스트한다.

 

 

ftp > send
로컬파일  C:\Users\DDWU\FTPTest.txt
→ 파일 전송 명령어 send
→ 로컬 PC 내에서 전송하고 싶은 파일의 경로를 작성 (FTPTest.txt 준비)
 
FTPTest.txt 내용
 
This is FTP File Test.
 
원격파일  chaewon
→ Ubuntu 서버에 생성할 파일의 경로를 작성
 
200 PORT command successful.
→ 정상적으로 전송!!

 

 

로그인했던 seven7 계정에 chaewon이라는 파일명으로 윈도우에서 작성된 This is Ftp File Test. 라는 내용의 텍스트 파일이 생성된 것을 확인할 수 있다.