키 비밀번호를 보낼 수 없습니다.

키 비밀번호를 보낼 수 없습니다.

우리 회사는 코드 작업을 수행할 수 있는 서버를 제공합니다. 서버에 로그인할 때마다 비밀번호를 입력해야 합니다.

~$ ssh -o StrictHostKeyChecking=no -p 22 [email protected]
Enter passphrase for key '/home/me/.ssh/id_rsa':

비밀번호를 입력하신 후 로그인이 가능합니다.

이제 매번 비밀번호를 입력하지 않도록 bash 스크립트를 만들려고합니다. 이것은 내 스크립트입니다.

#!/usr/bin/expect -f

set ip x.x.x.x
set password mypwd
spawn ssh -o StrictHostKeyChecking=no -p 22 me@$ip
expect {
#"*yes/no" { send "yes\r"; exp_continue}
"*passphrase*" { send "$password\r" }
}
interact

그러나 스크립트를 실행하면 예상대로 작동하지 않는 것 같습니다. 다음과 같은 출력이 나오며 여전히 매번 비밀번호를 입력해야 합니다.

spawn ssh -o StrictHostKeyChecking=no -p 22 [email protected]
Enter passphrase for key '/home/me/.ssh/id_rsa':

내가 뭐 잘못 했어요?

그런데, x.x.x.x그냥 IP4입니다.

답변1

*"*passphrase*"전역 패턴을 의 시작과 끝 부분에 두는 것은 단지 일치하는 것이므로 의미가 없습니다 "passphrase".

문제는 다음과 같습니다 man expect.때때로 프롬프트와 응답 사이에 지연이 필요합니다.. 이는 애플리케이션이 에코를 끈 다음 해당 시점에 입력을 새로 고치기 때문에 발생할 수 있습니다. 최소한 프롬프트의 마지막 문자(이 경우 콜론(공백이 올 수도 있음))와 일치하도록 노력해야 패턴이 "passphrase*:"작동할 수 있습니다.

여전히 그렇지 않다면 짧은 대기 시간을 추가해 보십시오.

{ sleep 0.5; send "$password\r" }

디버그를 실행하여 조사할 수도 있습니다 expect -d.

관련 정보