7.ftp, 서로 다른 시스템 간 파일 전송
ftp(File transfer protocol) 명령어를 통해 서로 다른 시스템 간에 파일을 주고받을 수 있음
이러한 FTP는 TCP/IP 프로토콜 중 5계층에 위치하고 있으며, 서로 다른 운영체제 간에도 이 프로토콜을 통해 파일을 주고받을 수 있음
리눅스에서는 FTP를 통해 파일을 주고받기 위해 vsFTPD(Very Secure Transfer Protocol Daemon)을 사용
1. 우분투 서버에 FTP 서비스 설치
관리자 권한을 빌려서 우분투에서 FTP 서버로 동작할 서비스 설치
sudo apt-get install vsftpdvsftpd 서비스 실행 상태 조회
systemctl status vsftpd초록색으로 active (running)이라고 표시될 경우 서비스가 동작 중
그렇지 않을 경우, 아래의 명령어를 통해 서비스 직접 실행
vsftpd 서비스 실행
sudo systemctl start vsftpdtelnet 명령어를 통해 FTP 서비스가 정상적으로 동작하는지 테스트
telnet 0 21실행 결과 - 정상적으로 동작할 경우
Trying 0.0.0.0...
Connected to 0
Escape character is '^]'.
220 (vsFTPd 3.0.3)→ 220 (vsFTPd 3.0.3)으로 출력되면 정상적으로 동작하고 있다는 의미
quit 명령어를 통해 telnet 종료
2. 다른 시스템(ex. Windows)에서 FTP 연결
1번에서 FTP 서버를 설치하였기 때문에 해당 서버에 접속할 클라이언트를 통해 서버와 클라이언트 간에 파일을 주고받을 수 있음(Upload / Download)
window 기본적으로 ftp 서비스를 제공하기 때문에 별도의 설치가 필요하지 않음
window에서 cmd 실행 후 ftp 명령어 실행
ftp아래와 같이 프롬프트가 ftp> 형태로 전환됨
ftp>FTP 전용 명령어인 open 명령어를 통해 접속하려는 서버의 ip 주소 입력
open 192.168.56.1→ 192.168.56.1 - virtualbox에 설정된 기본 우분투 서버 IP 주소
실행 결과
> ftp: connect : 연결이 거부되었습니다.Virtualbox에서 포트 포워딩 옵션으로 21번 포트 추가
open 명령어로 다시 접속 연결
open 192.168.56.1정상적으로 연결되었을 경우
192.168.56.1에 연결되었습니다.
220 (vsFTPd 3.0.5)
200 Always in UTF8 mode.
사용자(192.168.56.1:(none)): 사용자 부분 프롬프트에 리눅스 서버에 접속할 계정 입력
guguttemy→ guguttemy : 리눅스 서버에서 사용하는 사용자 계정 중 하나
정상적으로 입력되었을 경우
331 Please specify the password
암호:암호 입력 및 암호가 일치할 경우
230 Login successful.dir, pwd 등으로 현재 경로, 디렉토리 등 조회 가능
get 명령어를 통해 리눅스 서버 → 윈도우 서버(타 시스템)로 파일 다운로드,
put 명령어를 통해 윈도우 서버 → 리눅스 서버로 파일 업로드 가능
참고
vsftpd 서비스는 기본적으로 외부(여기서는 window 시스템)에서 파일을 업로드할 수 없도록 설정이 되어있음
따라서 put 명령어를 통해 리눅스 서버로 파일을 업로드하기 위해서는 설정 파일의 값을 바꾸고 서비스를 재실행하여 설정값대로 서비스를 다시 동기화해야함
vsftpd 서비스의 설정 값 변경
sudo vi /etc/vsftpd.confvsftpd.conf - vsftpd 관련 설정 파일
vi 파일 내에서 :set nu로 라인 넘버 추가
31번 라인에 작성된 아래의 코드 주석 해제
# write_enable=YES주석 해제 후
write_enable=YES파일 저장 후 종료
:wq변경한 설정 값대로 적용하기 위해 vsftpd 서비스 다시 실행
sudo /etc/init.d/vsftpd restart3. FTP 종료
전송이 끝났을 경우 window cmd에서 quit 명령어를 통해 FTP 서비스 종료
ftp> quit