sshpass란
- SSHPass는 클라이언트에서 서버로 ssh 접속 시 패스워드 요구 없이 할 수 있는 도구입니다.
- 클라이언트에서 키 생성(ssh-keygen)하여 서버로 배포(ssh-copy-id)합니다.
- ssh, scp 수행 시 배치모드로 패스워드를 전달하거나 스크립트에 패스워드를 기재하여 접속이 가능합니다.
설치
LINUX
1
2
3
4
5
# Ubuntu
apt-get install sshpass
# RHEL/CentOS
yum install sshpass
macOS
Homebrew에서는 공식적으로 SSHPass 지원을 하지 않으므로 아래 명령어로 직접 다운로드 및 설치를 진행합니다.
1
2
3
4
5
curl -O -L [https://fossies.org/linux/privat/sshpass-1.09.tar.gz](https://fossies.org/linux/privat/sshpass-1.09.tar.gz) && tar xvzf sshpass-1.09.tar.gz
cd sshpass-1.09
./configure
sudo make install
sshpass
개인키, 공개키 생성
ssh-keygen 명령어를 사용하여 Private/Public 키 쌍을 생성하여 아래 경로에 저장합니다.
- Private(개인키) :
~/.ssh/id_rsa
- Public(공개키) :
~/.ssh/id_rsa.pub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ssh-keygen
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ed:6b:78:50:2d:69:0b:0d:19:f4:bf:97:ae:a3:bb:30 root@123.45.67.89
The key's randomart image is:
+--[ RSA 2048]----+
| .oo |
| o. |
| o.o |
| ..*.. |
| S+.o. |
| ... . . |
| Eo. . o |
| .oo..o |
| o=+.o. |
+-----------------+
ssh 접속
1
2
3
4
sshpass -p "패스워드" ssh -o StrictHostKeyChecking=no -p "포트" "ID"@"서버 주소"
# 예시
sshpass -pP@ssw0rd ssh -o StrictHostKeyChecking=no -p22 test@123.45.67.89
- SSH 포트가 22인 경우
-p
옵션 생략 가능
서버에 공개키 배포하기
1
2
3
4
sshpass -p "패스워드" ssh-copy-id -p "포트" "ID"@"서버 주소"
# 예시
sshpass -pP@ssw0rd ssh-copy-id test@123.45.67.102
서버에 해당 계정에 대한 공개키 배포 후 접속
1
ssh "서버 주소"
ssh 명령어 실행
1
2
3
4
sshpass -p "패스워드" ssh -o StrictHostKeyChecking=no "ID"@"서버 주소" "명령어"
# 예시
sshpass -pP@ssw0rd ssh -o StrictHostKeyChecking=no test@123.45.67.89 hostname
scp 파일 전송
1
2
3
4
sshpass -p "패스워드" scp -o StrictHostKeyChecking=no "로컬 파일경로" "ID"@"서버 주소":"서버 파일경로"
# 예시
sshpass -pP@ssw0rd scp -o StrictHostKeyChecking=no hello.txt test@123.45.67.89:/home/test/hello.txt
댓글