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 |
|---|---|---|
| 3372 | 2026. 08. 18. | Linux 서버에서 포트는 열려 있는데 접속이 안 될 때: 방화벽·바인딩·라우팅 점검 순서 |
| 3340 | 2026. 08. 09. | systemd로 Linux 서비스 장애 자동 복구하기: 재시작 정책과 운영 로그 설정 |
| 3308 | 2026. 08. 01. | Linux 디스크 용량 부족을 막는 운영 가이드: 로그·임시파일·inode를 함께 점검하는 방법 |
| 3277 | 2026. 07. 24. | Linux 서버 SSH 보안 설정 가이드: 비밀번호 로그인 줄이고 접근 통제하기 |
| 3247 | 2026. 07. 16. | systemd 서비스 장애 대응 가이드: 자동 재시작과 로그 확인을 운영 표준으로 만드는 방법 |
| 3194 | 2026. 07. 07. | Linux 서버 디스크 용량 장애 예방: 로그와 임시 파일을 자동으로 정리하기 |
| 3158 | 2026. 06. 29. | Linux 서버 SSH 보안 강화: 키 인증, 접속 제한, 감사 로그를 함께 점검하기 |
| 3102 | 2026. 06. 21. | 크론 장애를 줄이는 systemd 타이머 운영 가이드: 실패 로그, 재시도, 격리 실행까지 |
| 3013 | 2026. 06. 13. | Linux 서버 로그 폭주 방지: journald와 logrotate로 디스크 장애를 막는 운영 가이드 |
| 2957 | 2026. 06. 05. | SSH 서버 접속 보안 점검: 키 인증, 접속 제한, 차단 로그 운영 가이드 |