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
는 비대화식 ssh 암호 제공 툴이다.
일반적으로 linux에서 ssh 접근을 하면 키보드에 직접 암호를 타이핑하여야 한다(대화형 모드). sshpass
는 비-대화형 모드에서 ssh에 암호를 제공하여 쉘 스크립트에서도 ssh를 이용할 수 있도록 한다.
ssh는 tty(TeleTYpewriter)를 사용하여 사용자가 실제로 대화형 모드 사용자에게서 비밀번호가 입력됐는지 확인한다. sshpass
는 tty에서 ssh를 실행하여 대화 모드에서 암호를 입력받은 것처럼 속여 자동으로 로그인할 수 있다.
sshpass
는 일반적으로 ssh 명령에서 사용되지만, ssh 암호 프롬프트를 사용하는 다른 명령에서도 사용할 수 있다.
sshpass [-p 패스워드 | -f 패스워드를 저장한 파일] ssh "ssh 파라미터"
!#/bin/bash
sshpass -p passwd ssh tkfrn4799@192.168.129.159
!#/bin/bash
sshpass -f passwd.txt scp tkfrn4799@192.168.129.159:/src /dst