nugawiki

./os

sshpass 설치 및 사용법

업데이트 2022-06-25 2분 소요 /OS #MACOS

sshpass란

  • SSHPass는 클라이언트에서 서버로 ssh 접속 시 패스워드 요구 없이 할 수 있는 도구입니다.
  • 클라이언트에서 키 생성(ssh-keygen)하여 서버로 배포(ssh-copy-id)합니다.
  • ssh, scp 수행 시 배치모드로 패스워드를 전달하거나 스크립트에 패스워드를 기재하여 접속이 가능합니다.

설치

LINUX

# Ubuntu
apt-get install sshpass

# RHEL/CentOS
yum install sshpass

macOS

Homebrew에서는 공식적으로 SSHPass 지원을 하지 않으므로 아래 명령어로 직접 다운로드 및 설치를 진행합니다.

curl -O -L 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
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 접속

sshpass -p "패스워드" ssh -o StrictHostKeyChecking=no -p "포트" "ID"@"서버 주소"

# 예시
sshpass -pP@ssw0rd ssh -o StrictHostKeyChecking=no -p22 root@135.79.246.99
  • SSH 포트가 22인 경우 -p 옵션 생략 가능

서버에 공개키 배포하기

sshpass -p "패스워드" ssh-copy-id -p "포트" "ID"@"서버 주소"

# 예시
sshpass -pP@ssw0rd ssh-copy-id root@123.45.67.102

서버에 해당 계정에 대한 공개키 배포 후 접속

ssh "서버 주소"

ssh 명령어 실행

sshpass -p "패스워드" ssh -o StrictHostKeyChecking=no "ID"@"서버 주소" "명령어"

# 예시
sshpass -pP@ssw0rd ssh -o StrictHostKeyChecking=no root@135.79.246.99 hostname

scp 파일 전송

sshpass -p "패스워드" scp -o StrictHostKeyChecking=no "로컬 파일경로" "ID"@"서버 주소":"서버 파일경로"

# 예시
sshpass -pP@ssw0rd scp -o StrictHostKeyChecking=no hello.txt root@135.79.246.99:/root/hello.txt