데이터 분석가
article thumbnail
Published 2024. 3. 21. 11:50
FTP/SFTP/SCP를 활용한 파일 전송 Linux

개요

Linux상에서 활용되는 파일 전송 방법들에 대해서 다뤄보겠습니다.

개념

FTP

인터넷에서 파일 전송을 위해 가장 일반적으로 사용되는 프로토콜 중 하나입니다. FTP는 파일 전송을 위해 TCP/IP 프로토콜을 사용하며, 전송 중에 데이터를 암호화하지 않습니다.

SFTP

SSH에서 동작하는 FTP라고 이해하면 안되고 국제 인터넷 표준화 기구(IETF) SECSH 워킹 그룹에 의해 처음부터 설계된 새로운 프로토콜이다. SSH를 기반으로하며, 데이터 전송 중에 암호화를 사용하여 보안성을 향상시킵니다. 또한 SFTP는 공개키 및 대칭키 암호화를 사용하여 사용자 인증 및 데이터 보호를 제공하고 SCP에 비해 포괄적으로 파일 전송 및 관리가 가능하다.

SCP

SSH를 기반으로하며, 데이터 전송 중에 암호화를 사용하여 보안성을 향상시킵니다. SFTP에 비해 SCP는 파일 복사에 초점을 맞춘 보다 가벼운 파일 전송 프로토콜입니다.

실행방법

FTP

FTP서버는 ubuntu, FTP클라이언트는 window를 사용하였습니다. 아래 설정을 완료하면 FTP연결이 되고 클라이언트(여기서는 window)에서 여러 명령어를 통해 파일업로드와 다운로드가 가능해집니다.

FTP 서버 설정(ubuntu)

  • FTP 서버 설치
sudo apt update sudo apt install vsftpd
  • FTP 서버 시작
sudo systemctl start vsftpd
  • 방화벽 설정
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw reload
  • IP주소 확인
ifconfig

FTP 클라이언트 설정(window)

  • 명령 프롬프트(cmd)실행
  • 서버에 연결
ftp [ubuntu 서버의 IP주소]
  • 게스트 OS의 사용자 이름과 비밀번호 입력.

SFTP

virtualbox의 가상 centos와 window host간의 파일전송을 다뤄보겠습니다.

  • 아래 코드를 입력하면 처음 접속한 경우 인증키 생성절차를 거치게 되는데 "Are you sure you want to continue connecting (yes/no)?"라는 질문에 'yes'라고 답해주시면 됩니다.
`sftp 계정명@접속하려는 서버IP주소`
  • 그리고 접속하려는 서버의 계정 비밀번호를 입력해줍니다.
  • 접속이 무사히 완료되면 아래와 같은 명령어 줄이 생성됩니다.

  • 아래의 코드를 입력해 파일업로드 및 다운로드를 진행할 수 있습니다.
# 업로드
put 파일명
# 다운로드
get 파일명
# 접속한 서버의 파일 확인
ls

SCP

scp는 연결을 한 후 자유롭게 파일전송을 한다기보다는 scp명령어를 입력할 때 마다 비밀번호를 입력한 후 파일전송이 이루어진다. 또한 로컬->원격, 원격->로컬, 원격->원격의 3가지 파일전송의 경우에 따라 명령어가 약간 달라진다.

옵션

  • -r : 폴더를 복사하는 경우 사용
  • -P : ssh 포트 지정
  • -v : 상세내용을 보면서 디버깅 가능
  • -p : 전송 시 파일 수정 시간과 권한 유지

로컬에서 원격

  • 하나의 파일만 보내는 경우
scp [전송할 파일의 경로] [유저명]@[IP주소]:[받을 경로]
  • 복수의 파일을 보내는 경우
scp [옵션] [파일명1] [파일명2] [유저명]@[IP주소]:[받을 경로]

원격에서 로컬

  • 하나의 파일만 보내는 경우
scp [유저명]@[IP주소]:[전송할 파일의 경로] [받을 경로]
  • 복수의 파일을 보내는 경우(파일명을 ""로 묶는 것에 유의)
scp [옵션] [유저명]@[IP주소]:"[파일명1] [파일명2]" [받을 경로]

원격에서 원격

  • 하나의 파일만 보내는 경우
scp [유저명]@[IP주소]:[전송할 파일의 경로] [유저명]@[IP주소]:[받을 경로]
  • 복수의 파일을 보내는 경우(파일명을 ""로 묶는 것에 유의)
scp \[옵션\] \[유저명\]@\[IP주소\]:"\[파일명1\] \[파일명2\]" \[유저명\]@\[IP주소\]:\[받을 경로\]  
profile

데이터 분석가

@이꾹꾹

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!