글 목록으로 돌아가기

Linux

파일 서버

Linux FTP, vsftpd, SSH 파일 전송, NFS 파일 서버 설정 정리

Dohyeon Kim
Dohyeon Kim 2026년 7월 28일 · 3분 읽기
Linux AutoEverSW

1) FTP


개요

  • FTP(File Transfer Protocol)는 네트워크를 통해 컴퓨터 간에 파일을 전송하기 위한 가장 기본적인 표준 통신 규약
  • 다른 프로토콜과 달리 2개의 포트를 동시에 사용

핵심 작동 원리: 2개의 채널

  • Control Channel(21번 포트): 사용자 아이디/비밀번호 확인, 명령어 전달
  • Data Channel(20번 포트): 실제 데이터 전송 통로

접속 방식

  • 능동 모드(Active): 서버가 클라이언트에게 접속을 시도하는 방식
  • 수동 모드(Passive): 클라이언트가 서버에게 접속을 시도하는 방식
    • 대부분의 웹 브라우저나 공유기가 사용

종류

종류 설명
기본 FTP 아이디와 비밀번호가 암호화되지 않은 채 전송 → 해킹에 취약
SFTP(Secure FTP) SSH 기술을 이용해 전송 과정 전체를 암호화 → 현재 가장 많이 사용
FTPS(FTP over SSL/TLS) SSL 인증서를 사용하여 암호화하는 방식

장점과 단점

  • 장점: 대용량 파일을 일괄 전송하기에 매우 효율적, 전송 속도 빠름
  • 단점: 하지만 보안 설정을 하지 않으면 정보 유출 위험이 크고 설정이 복잡해질 수 있음

2) vsftpd


개요

  • 우분투에서 기본적으로 제공하는 보안성과 성능이 우수한 FTP 서버
  • 설치 및 운영이 쉬움

설치

sudo apt -y install vsftpd

설정 파일

  • /etc/vsftpd.conf
  • 주요 옵션
    • anonymous_enable: 익명 사용자의 접속 허용 여부 (로그인 불필요)
    • local_enable: 로컬 컴퓨터에서의 접속
    • max_clients: 동시 최대 접속자 수
    • max_per_ip: 하나의 PC에서 접속할 수 있는 접속자 수

실습

# 설정 변경 - /etc/vsftpd.conf 파일 수정
# anonymous_enable=YES
# write_enable=YES
# anon_upload_enable=YES
# anon_mkdir_write_enable=YES

# 디렉토리 생성
cd /srv/ftp
sudo mkdir pub
sudo chmod 777 pub
cd pub
sudo touch file
ls -l

# vsftpd 재시작
sudo systemctl restart vsftpd

3) SSH를 이용한 파일 전송


사용하는 이유

  • 별도의 서버 설치 불필요
  • 데이터 무결성 검증
  • 인증 방식의 다양성

SCP (Secure Copy)

  • 가장 빠르고 간단하게 파일을 복사하는 방식
  • 명령어 한 줄로 전송 완료
# 로컬 → 원격지 파일 보내기
scp [파일 경로] [계정]@[IP주소]:[저장경로]

# 원격지 → 로컬 파일 가져오기
scp [계정]@[IP주소]:[파일경로] [로컬경로]

PEM 파일을 이용한 인증

# PEM 파일 생성
ssh-keygen -t rsa -b 4096 -m PEM -f 파일경로

# 파일 소유자에게만 읽기 권한 부여
chmod 400 파일경로

# 로컬 → 원격지 파일 보내기 (pem 인증)
scp -i pem파일경로 [파일 경로] [계정]@[IP주소]:[저장경로]

# 원격지 → 로컬 파일 가져오기 (pem 인증)
scp -i pem파일경로 [계정]@[IP주소]:[파일경로] [로컬경로]

4) NFS


개요

  • NFS(Network File System)는 네트워크 상의 다른 컴퓨터의 파일 시스템을 마치 자신의 로컬 디스크에 있는 것처럼 사용할 수 있게 해주는 클라이언트/서버 프로토콜
  • 유닉스와 리눅스 환경에서 표준 파일 공유 프로토콜로 사용됨

주요 특징

  • Transparency(투명성): 사용자는 파일이 원격 서버에 있는지 로컬 디스크에 있는지 구분하지 않고 동일한 명령어로 파일 읽기/쓰기 가능
  • 중앙 집중 관리: 데이터를 서버 한 곳에 모아 관리 → 백업이나 보안 정책 적용이 효율적
  • 플랫폼 독립성: RPC(Remote Procedure Call) 메커니즘을 사용하여 서로 다른 운영체제 간에도 파일 공유 가능

장점

  • 비용 절감
  • 편의성: 사용자 홈 디렉토리를 NFS로 설정하면 어떤 컴퓨터에서 로그인하든 동일한 작업 환경 유지

단점

  • 하지만 네트워크 의존성: 네트워크 장애 시 파일 시스템 사용 불가
  • 하지만 보안 취약: 초창기 버전은 호스트 IP 기반 인증 방식 → 보안에 취약

활용 사례

  • 클러스터 서버: 여러 대의 웹 서버나 애플리케이션 서버가 동일한 데이터를 공유해야 할 때 사용
  • 데이터 백업: 여러 호스트의 데이터를 중앙 스토리지 서버로 모으는 용도
  • Kubernetes: 컨테이너 환경에서 영구 볼륨(Persistent Volume)으로 NFS 연결 → 데이터 휘발성 방지

구현 순서

  • SERVER
    • 관련 패키지 설치 →
    • 서버의 /etc/ecports에 공유할 디렉토리, 접근을 허용할 컴퓨터, 접근 권한을 지정
    • 서비스 실행
  • CLIENT
    • 관련 패키지 설치
    • showmount 명령을 실행해 NFS 서버에 공유된 디렉토리가 있는지 확인
    • mount 명령을 실행해 NFS 서버에 공유된 디렉토리를 마운트

구현

  • SERVER
    • sudo apt update
    • sudo apt install nfs-kernel-server -y
    • 공유할 디렉토리 생성 후 접근 권한 설정
      • sudo mkdir /share && sudo chmod 777 /share
    • 설정 파일에 추가 → sudo nano /etc/exports
      • /share 10.0.2.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
    • 설정 내용 반영
      • sudo exportfs -rav
    • 방화벽 설정
      • sudo ufw allow from 10.0.2.0/24
    • nfs-server가 부팅 시 시작하도록
      • sudo systemctl enable nfs-server
      • sudo systemctl restart nfs-server
      • sudo systemctl status nfs-server
sudo touch /share/file
  • CLIENT
    • sudo apt install nfs-common -y
    • NFS 서버에 공유된 디렉토리 확인
      • showmount -e 10.0.2.3
    • 마운트할 디렉토리 생성
      • mkdir ~/myshare
    • 마운트
      • sudo mount -t nfs -o nfservers=3 10.0.2.3:/share ~/myshare

댓글