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 |
|---|---|---|
| 2342 | 2026. 04. 06. | macOS 터미널 보안 기능과 필수 시스템 관리 명령어 2026 총정리 |
| 2328 | 2026. 04. 05. | Linux systemd 실전 마스터: 서비스 관리부터 타이머, 리소스 제한까지 |
| 2308 | 2026. 04. 05. | macOS 터미널 자동화 완벽 가이드: launchd, Automator, 셸 스크립트 실전 |
| 2307 | 2026. 04. 05. | Linux 시스템 모니터링 완벽 가이드: 성능 병목 찾기부터 자동 알림까지 |
| 2282 | 2026. 04. 04. | macOS 개발자를 위한 터미널 완벽 가이드: Homebrew, CLI 도구, 시스템 관�� |
| 2281 | 2026. 04. 04. | Linux 시스템 성능 분석 실전 가이드: top부터 perf, strace까지 완벽 정리 |
| 2211 | 2026. 02. 11. | systemd 서비스 관리와 저널 로그 분석 실전 |
| 2210 | 2026. 02. 11. | macOS 개발환경 자동화: Homebrew와 Dotfiles 관리 |
| 2209 | 2026. 02. 11. | Nginx 리버스 프록시와 로드밸런싱 고급 설정 |
| 2208 | 2026. 02. 11. | Kubernetes 1.31 신기능과 클러스터 운영 팁 |