[Ubuntu] shell script에서 ssh, scp 사용 시 비밀번호 자동 입력 방법

김성수·2020년 9월 11일
2

bash 스크립트에 scp 작업을 작성하고 cron으로 예약을 걸었다.


❌접속 거부

Permission denied, please try again.^M
Permission denied, please try again.^M
user@111.222.333.123: Permission denied (publickey,password).^M

아차, scp를 사용할 땐 항상 원격 pc의 접속 비밀번호를 입력해주어야 했다.

쉘 스크립트 안에서도 ssh 비밀번호 입력을 자동으로 할 수 있는 도구가 있다.


🔆sshpass

sshpass는 비대화식 ssh 암호 제공 툴이다.

일반적으로 linux에서 ssh 접근을 하면 키보드에 직접 암호를 타이핑하여야 한다(대화형 모드). sshpass는 비-대화형 모드에서 ssh에 암호를 제공하여 쉘 스크립트에서도 ssh를 이용할 수 있도록 한다.

ssh는 tty(TeleTYpewriter)를 사용하여 사용자가 실제로 대화형 모드 사용자에게서 비밀번호가 입력됐는지 확인한다. sshpass는 tty에서 ssh를 실행하여 대화 모드에서 암호를 입력받은 것처럼 속여 자동으로 로그인할 수 있다.

sshpass는 일반적으로 ssh 명령에서 사용되지만, ssh 암호 프롬프트를 사용하는 다른 명령에서도 사용할 수 있다.


💡사용법

sshpass [-p 패스워드 | -f 패스워드를 저장한 파일] ssh "ssh 파라미터"
예1. 비밀번호 직접 입력 (with ssh)
!#/bin/bash

sshpass -p passwd ssh tkfrn4799@192.168.129.159 
예2. 비밀번호가 저장된 파일을 읽기 (with scp)
!#/bin/bash

sshpass -f passwd.txt scp tkfrn4799@192.168.129.159:/src /dst
profile
뿌리가 튼튼한 사람이 되고자 합니다.

0개의 댓글