본문 바로가기
IT/linux

sshpass 를 이용한 ssh 접속 방법 설명

by 어느해겨울 2021. 12. 28.

sshpass 를 이용한 ssh 접속 방법

 

sshpass는 비대화형으로 ssh 비밀번호를 입력해주는 명령어이다.

우선 sshpass 가 설치되었는지 확인한다.

dpkg -l | grep sshpass
ii	sshpass		1.05-1		amd64		Non-interactive		ssh

설치가 안되어있다면 apt-get 을 이용하여 설치하자.

sudo apt-get install sshpass
[sudo] password for muabow:
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
sshpass is already the newest version (1.05-1).
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libexpat1:i386 libmpdec2:i386 libpython3-stdlib:i386 libpython3.5-minimal:i386 libpython3.5-stdlib:i386 libreadline6:i386 libsqlite3-0:i386 libssl1.0.0:i386
Use 'sudo apt autoremove' to remove them.
0개 업그레이드, 0개 새로 설치, 0개 제거 및 30개 업그레이드 안 함.

 

sshpass 사용 요령은 다음과 같다.

sshpass -p <비밀번호> ssh <계정>@<IP 주소>

그렇다면 192.168.1.100 주소에 비밀번호가 1인 admin 계정으로 로그인하려면 어떻게 할까?

sshpass -p 1 ssh admin@192.168.1.100

하지만 접속이 되지 않을 것이다.

 

이유는 ssh는 최초 접속 시 상호간에 공개키와 사설 키를 교환하는 과정이 필요하기 때문에 key 교환을 위한 interaction이 존재한다.

ssh admin@192.168.1.100 으로 다시 시도해보자.

ssh admin@192.168.1.100
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:yAwonWyo/Sjnb8rXkvZzpEXvRlI0LlQTlkWa1XPMUa8.
Are you sure you want to continue connecting (yes/no)?

 

그렇다면 매번 key 교환을 위해 yes 를 하고 sshpass를 써야 할까?

그러한 불편한 행위를 피하기 위해서 ssh의 옵션인 -o StrictHostKeyChecking=no을 사용해보자.

sshpass -p 1 ssh -o StrictHostKeyChecking=no admin@192.168.1.100
Warning: Permanently added '192.168.1.100' (ECDSA) to the list of known hosts.

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jan  9 07:53:58 1970 from 192.168.1.90

간단하게 접속이 되는 것을 확인할 수 있다.

 

결론적으로 key 인증을 무시한 sshpass 사용 방법은 다음과 같다.

sshpass -p <비밀번호> ssh -o StrictHostKeyChecking=no <계정>@<IP 주소>

 

https://linux.die.net/man/1/sshpass

 

sshpass(1) - Linux man page

sshpass(1) - Linux man page Name sshpass - noninteractive ssh password provider Synopsis sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments Description This manual page documents the sshpass command. sshpass is a utility designed for runn

linux.die.net

 

 

댓글