Contents
see List작성일 2018. 12. 06.
sshpass와 scp로 다른 포트 파일 전송
sshpass는 SSH 비밀번호를 비대화형으로 전달하는 도구입니다. scp와 함께 사용하면 자동화된 파일 전송이 가능합니다. 특히 비표준 포트를 사용하는 서버로의 전송에 유용합니다.
언제 사용하나요?
- SSH 키 설정 없이 자동화된 파일 전송
- 배포 스크립트에서 원격 서버로 파일 복사
- 비표준 포트(22 이외)를 사용하는 서버 접속
- CI/CD 파이프라인에서 파일 배포
sshpass 설치
# CentOS / RHEL
sudo yum install sshpass
# Ubuntu / Debian
sudo apt-get install sshpass
# macOS (Homebrew)
brew install hudochenkov/sshpass/sshpass
기본 사용법
# 비밀번호로 SSH 접속
sshpass -p "비밀번호" ssh user@host
# 비밀번호로 SCP 파일 전송
sshpass -p "비밀번호" scp file.txt user@host:/path/
# 디렉토리 전송 (-r 옵션)
sshpass -p "비밀번호" scp -r /local/dir user@host:/remote/dir
다른 포트 사용
# SSH 다른 포트 접속 (-p 옵션)
sshpass -p "비밀번호" ssh -p 2222 user@host
# SCP 다른 포트 전송 (-P 옵션, 대문자)
sshpass -p "비밀번호" scp -P 2222 file.txt user@host:/path/
# 디렉토리 전송 + 다른 포트
sshpass -p "비밀번호" scp -P 2222 -r /local/dir user@host:/remote/
# 주의: SSH는 -p, SCP는 -P (대문자)
호스트 키 확인 무시
# 처음 접속 시 호스트 키 확인 건너뛰기
sshpass -p "비밀번호" ssh -o StrictHostKeyChecking=no user@host
# SCP에서도 동일
sshpass -p "비밀번호" scp -o StrictHostKeyChecking=no file.txt user@host:/path/
# 알려진 호스트 파일에 저장 안함
sshpass -p "비밀번호" ssh -o UserKnownHostsFile=/dev/null
-o StrictHostKeyChecking=no user@host
파일에서 비밀번호 읽기
# 비밀번호 파일 생성 (권한 주의)
echo "비밀번호" > /secure/password.txt
chmod 600 /secure/password.txt
# 파일에서 비밀번호 읽기 (-f 옵션)
sshpass -f /secure/password.txt ssh user@host
# 환경변수에서 비밀번호 읽기 (-e 옵션)
export SSHPASS="비밀번호"
sshpass -e ssh user@host
실전 예시: 배포 스크립트
#!/bin/bash
# deploy.sh
HOST="192.168.1.100"
PORT="2222"
USER="deploy"
PASS="secretpassword"
LOCAL_DIR="/app/build"
REMOTE_DIR="/var/www/html"
# 빌드 파일 전송
sshpass -p "$PASS" scp -P $PORT -r
-o StrictHostKeyChecking=no
$LOCAL_DIR/* $USER@$HOST:$REMOTE_DIR/
# 원격 서버에서 명령 실행
sshpass -p "$PASS" ssh -p $PORT
-o StrictHostKeyChecking=no
$USER@$HOST "sudo systemctl restart nginx"
echo "배포 완료!"
압축 전송
# 압축해서 전송 (-C 옵션)
sshpass -p "비밀번호" scp -C -P 2222
large_file.sql user@host:/backup/
# tar와 함께 사용 (파이프)
tar czf - /local/dir | sshpass -p "비밀번호"
ssh -p 2222 user@host "tar xzf - -C /remote/"
rsync와 함께 사용
# rsync로 동기화 (더 효율적)
sshpass -p "비밀번호" rsync -avz
-e "ssh -p 2222 -o StrictHostKeyChecking=no"
/local/dir/ user@host:/remote/dir/
# 삭제 동기화
sshpass -p "비밀번호" rsync -avz --delete
-e "ssh -p 2222"
/local/dir/ user@host:/remote/dir/
보안 주의사항
- 명령줄 비밀번호는 프로세스 목록에 노출됨
- 가능하면 SSH 키 인증 사용 권장
- 비밀번호 파일은 600 권한으로 보호
- 스크립트에 비밀번호 하드코딩 금지
- 환경변수나 보안 저장소 활용
SSH 키 대안
# SSH 키 생성
ssh-keygen -t rsa -b 4096
# 공개키 복사 (권장 방법)
ssh-copy-id -p 2222 user@host
# 키로 접속 (비밀번호 불필요)
ssh -p 2222 user@host
scp -P 2222 file.txt user@host:/path/os
| No | 작성일 | Title |
|---|---|---|
| 2207 | 2026. 02. 11. | Linux 서버 보안 강화 체크리스트 2025 |
| 2161 | 2026. 02. 11. | Nginx vs Caddy: 최신 웹서버 비교와 설정 가이드 |
| 2160 | 2026. 02. 11. | 서버 모니터링 자동화: Netdata, Zabbix, Datadog 비교 |
| 2159 | 2026. 02. 11. | 컨테이너 보안: rootless Docker와 Podman |
| 2158 | 2026. 02. 11. | Linux 네트워크 성능 튜닝과 eBPF 활용 |
| 2157 | 2026. 02. 11. | Kubernetes 클러스터 운영 실전 가이드 |
| 2156 | 2026. 02. 11. | ZFS vs Btrfs: 차세대 파일시스템 비교 |
| 2155 | 2026. 02. 11. | SSH 보안 강화와 터널링 고급 기법 |
| 2154 | 2026. 02. 11. | systemd 고급 활용: 서비스 관리와 타이머 |
| 2153 | 2026. 02. 11. | macOS Sequoia 개발 환경 최적 설정 가이드 |