개요
SFTP(SSH File Transfer Protocol)는 보안이 취약한 FTP를 대체하기 위해 개발된 프로토콜입니다. `sftp` 명령어는 SSH 연결을 사용하여 모든 데이터와 명령을 암호화하기 때문에, 사용자 이름, 비밀번호, 파일 내용 등이 네트워크 상에서 노출될 위험이 없습니다. FTP와 마찬가지로 대화형 모드를 지원하며, 사용법이 유사해 FTP에 익숙한 사용자도 쉽게 사용할 수 있습니다.
주요 특징
sftp 명령어의 주요 특징은 다음과 같습니다.
- SSH를 기반으로 하여 모든 통신을 암호화합니다.
- FTP와 유사한 대화형 명령 인터페이스를 제공합니다.
- 단일 포트(기본 22번)를 사용하여 방화벽 환경에 유리합니다.
- 파일 업로드(`put`), 다운로드(`get`), 디렉토리 이동(`cd`, `lcd`) 등 다양한 기능을 지원합니다.
SFTP vs FTP
SFTP와 FTP는 파일 전송 방식과 보안 측면에서 큰 차이가 있습니다.
- SFTP: SSH를 통해 데이터를 암호화하여 전송하므로 안전합니다. 포트 22를 사용하며, 단일 포트로 모든 통신을 처리합니다.
- FTP: 평문(plain text)으로 데이터를 전송하여 보안에 취약합니다. 포트 21을 사용하며, 데이터 전송을 위해 별도의 포트가 필요합니다.
주요 옵션
sftp는 FTP와 유사하게 대화형 모드로 진입하여 사용하거나, 특정 명령과 함께 비대화형으로 사용할 수 있습니다.
1) 실행 옵션
2) 대화형 모드 내부 명령
생성된 명령어:
명령어를 조합해 보세요.
설명:
`sftp` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
sftp 명령어의 다양한 사용 예시를 통해 기능을 익혀보세요.
대화형 모드로 서버 접속
sftp user@server.com
`user` 계정으로 `server.com`에 접속하여 대화형 모드로 진입합니다.
파일 다운로드
sftp user@server.com
... (접속 후)
cd /var/log
get syslog ~
원격 서버의 `/var/log` 디렉토리에서 `syslog` 파일을 로컬의 `~` 디렉토리로 다운로드합니다.
파일 업로드
sftp user@server.com
... (접속 후)
cd /var/www
put /home/user/document.txt
로컬의 `/home/user/document.txt` 파일을 원격 서버의 `/var/www` 디렉토리로 업로드합니다.
비대화형 모드로 파일 전송
sftp user@server.com:/remote/path <<< 'put localfile.txt'
`put` 명령어를 비대화형 모드로 사용하여 파일을 한 번에 업로드합니다.
설치
sftp는 대부분의 리눅스 배포판에서 `openssh-client` 패키지의 일부로 기본 포함되어 있습니다. SSH 클라이언트가 설치되어 있다면 별도의 설치가 필요하지 않습니다.
Debian/Ubuntu
sudo apt update
sudo apt install -y openssh-client
RHEL/CentOS/Fedora
sudo dnf install -y openssh-clients
팁 & 주의사항
sftp 명령어 사용 시 유의할 점들을 정리했습니다.
팁
- sftp는 `scp`와 마찬가지로 SSH 인증 정보를 사용합니다. 따라서 `~/.ssh/config` 파일을 사용해 접속 설정을 간편하게 관리할 수 있습니다.
- 대화형 모드에서 `help`를 입력하면 모든 내부 명령 목록을 볼 수 있습니다. `put`, `get` 외에도 `mput`, `mget`으로 여러 파일을 전송할 수 있습니다.
- 네트워크 문제나 인증 오류 발생 시, `-v` 옵션을 사용해 상세 정보를 출력하면 문제 해결에 도움이 됩니다.