sftp — SSH 파일 전송
Linux / 원격 서버 접속 관리 / sftp.html
SSH 연결 위에서 파일을 올리고 내리는 대화형 전송 도구.
기본 정보
| 명령어 이름 | sftp |
|---|---|
| 한 줄 소개 | SSH 연결 위에서 파일을 올리고 내리는 대화형 전송 도구. |
| 제공 | OpenSSH (openssh-client) |
| 공식 문서 | https://man.openbsd.org/sftp.1 |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (openssh-client) |
| 분류 | 리눅스 원격 접속 (태그: 원격 접속·파일 전송 (태그: sftp, ssh, 전송, 업로드, 다운로드)) |
이 명령어는 무엇인가?
sftp는 SSH 위에서 동작하는 파일 전송 클라이언트입니다. FTP와 비슷한 대화형 명령(get, put, ls, cd)을 제공하지만, 전송 구간 전체가 SSH로 암호화되고 기존 키와 계정을 그대로 사용합니다.
scp가 한 번에 하나씩 복사하는 도구라면, sftp는 세션을 유지한 채 여러 파일을 오가며 작업할 수 있습니다. -b 옵션으로 배치 파일을 실행해 비대화형 전송도 가능합니다.
어떤 문제를 해결하는가?
- 원격 서버로 설정 파일이나 배포 산출물을 안전하게 올릴 때
- 원격 디렉터리를 둘러보며 필요한 파일만 골라 내려받을 때
- 방화벽에서 SSH(22번)만 열려 있어 FTP 포트를 열 수 없을 때
- 키 인증으로 반복 전송을 자동화해야 할 때
주요 기능
대화형 전송
접속 후 cd, ls, get, put으로 원격과 로컬을 오가며 파일을 다룹니다.
- 활용 상황: 여러 파일을 한 세션에서 순서대로 처리할 때
- 얻는 결과: 디렉터리 구조를 보며 작업할 수 있습니다.
- 제한 사항: 경로를 잘못 지정하면 엉뚱한 위치에 파일이 생깁니다.
배치 모드
-b로 명령 목록 파일을 읽어 비대화형으로 실행합니다.
- 활용 상황: cron이나 CI에서 정해진 파일을 주기적으로 보낼 때
- 얻는 결과: 사람 없이 동일한 전송이 반복됩니다.
- 제한 사항: 오류 시 배치가 중단되므로 종료 코드 확인이 필요합니다.
SSH 키 재사용
~/.ssh/config, 키, ProxyJump 설정을 그대로 따릅니다.
- 활용 상황: 이미 SSH 접속이 되는 서버에 파일만 옮기면 될 때
- 얻는 결과: 별도 계정이나 포트를 열지 않아도 됩니다.
- 제한 사항: SSH가 차단되면 sftp도 쓸 수 없습니다.
설치 및 실행
설치 여부 확인
sftp -V
sudo apt install openssh-client # Debian/Ubuntu sudo dnf install openssh-clients # Fedora
실제 사용 예제
접속과 둘러보기
원격에 접속해 현재 위치와 파일 목록을 확인합니다.
sftp deploy@203.0.113.10
pwd
ls -l
bye
파일 올리고 내리기
로컬 파일을 올리고 원격 파일을 내려받습니다.
put ./app.tar.gz /srv/releases/
get /var/log/app/error.log ./error.log
배치 전송
명령 목록을 만들어 비대화형으로 실행합니다.
printf 'put build.zip /srv/www/\nbye\n' > /tmp/up.txt
sftp -b /tmp/up.txt deploy@203.0.113.10