notes
fileZilla
FileZilla FTP·SFTP 접속 설정과 파일 전송 사용법 메모.
- FTP는 21번 포트에 평문이라 사내 테스트 정도에만 쓰고, 실제 서버는 SSH 위에서 도는 SFTP(22번)를 쓴다.
- FileZilla 사이트 관리자에 프로토콜, 호스트, 포트, 계정을 저장해 두고 접속한다.
- 왼쪽이 내 PC, 오른쪽이 서버라서 폴더를 맞춘 다음 드래그로 올리고 내린다.
서버에 빌드 결과물 몇 개 올리거나 로그 파일 받을 때마다 scp 명령을 치기 귀찮아서 FileZilla를 깔았다. 드래그 한 번이면 끝나니까 급할 때 편하다.
FTP가 뭔지 먼저
FTP(File Transfer Protocol)는 이름 그대로 파일 전송을 위해 만든 프로토콜이다. HTTP가 웹 페이지를 요청하고 받는 쪽이라면, FTP는 서버 폴더를 열어 보고 파일을 올리고 내리고 지우는 데 맞춰져 있다.
특이한 건 연결을 두 개 쓴다는 점이다. 명령을 주고받는 제어 연결(21번)과 실제 파일이 흐르는 데이터 연결이 따로 있다.
데이터 연결을 누가 여느냐에 따라 액티브/패시브로 나뉘는데, 요즘은 클라이언트가 서버 쪽 포트로 붙는 패시브가 기본이다. 서버 방화벽에 패시브 포트 범위를 열어 두지 않으면 로그인까지는 되는데 디렉터리 목록에서 멈춘다. 처음에 이것 때문에 한참 헤맸다.
더 큰 문제는 평문이라는 것. 아이디, 비밀번호, 파일 내용이 그대로 날아간다. 그래서 실제 서버에선 SFTP를 쓴다.
SFTP는 이름만 비슷하지 SSH 위에서 도는 별개 프로토콜이다. 서버에 SSH로 들어갈 수 있으면 서버 쪽에 따로 깔 것 없이 FileZilla에서 바로 붙는다.
설치
공식 사이트에서 FileZilla Client를 받는다. macOS는 Apple Silicon(ARM)용과 Intel용이 따로 있어서 내 맥에 맞는 걸 골랐다. FileZilla Server는 윈도우에 FTP 서버를 띄울 때 쓰는 거라 클라이언트만 있으면 된다. 설치 파일에 다른 프로그램 설치 제안이 끼어 있는 경우가 있어서 설치 화면은 한 번씩 읽고 넘긴다.
접속 설정 (사이트 관리자)
실행하면 위쪽에 빠른 연결 바, 왼쪽은 내 컴퓨터, 오른쪽은 서버, 맨 아래는 전송 대기열이다. 빠른 연결은 매번 입력해야 해서 자주 가는 서버는 파일 메뉴의 사이트 관리자(Cmd+S)에 저장해 둔다.
AWS EC2처럼 키로만 들어가는 서버는 로그온 유형을 키 파일로 두고 .pem을 지정한다. 지정하면 FileZilla가 자기 형식으로 변환할지 묻는데 그냥 확인하면 된다. 처음 붙을 때는 호스트 키를 믿을지 묻는 창도 한 번 뜬다.
아래는 차례대로 연결 전 메인 화면, 사이트 관리자 메뉴, 접속에 성공했을 때 로그다. 로그에 Connected, 디렉터리 목록 조회 성공이 찍히면 된 것.
파일 올리고 내리기
왼쪽에서 올릴 파일이 있는 폴더, 오른쪽에서 올릴 위치를 연 다음 끌어다 놓으면 끝이다. 같은 이름이 있으면 덮어쓸지 묻는데, 배포 파일을 자주 갈아끼우는 폴더라면 "크기나 날짜가 다르면 덮어쓰기"로 두면 편하다. 실패한 건 아래 대기열의 실패 탭에 남아서 다시 시도할 수 있다.
막혔던 것들
# 파일 하나 올리기
scp -i key.pem ./dist.zip ubuntu@1.2.3.4:/home/ubuntu/
# 폴더 통째로, 바뀐 것만
rsync -avz -e "ssh -i key.pem" ./dist/ ubuntu@1.2.3.4:/home/ubuntu/dist/
# 대화형
sftp -i key.pem ubuntu@1.2.3.4
sftp> put dist.zip
sftp> get logs/app.log배포처럼 반복되는 일은 결국 이쪽으로 스크립트를 만들게 되고, FileZilla는 눈으로 확인하면서 몇 개만 옮길 때 쓴다.