아래 명령은 내 로컬 호스트에서 제대로 실행되고 원하는 출력을 제공합니다. 아래를 참조하세요
$ ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit"
Output:
WORKS
test.sh
이제 이 명령을 충분한 실행 권한이 있는 스크립트 파일에 넣습니다.
$ cat test.sh
segment=$(ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit")
echo "SEGMENT $segment"
원하는 결과가 나오지 않습니다. 실제로 다음과 같은 오류가 발생합니다.
$ ./test.sh
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
SEGMENT
기대하고 있어요
SEGMENT WORKS
지금은 권한거부 오류는 사라졌지만
문제가 무엇인지 제안해 주실 수 있나요?
답변1
문제는 별칭을 사용했다는 것입니다.
alias ssh=ssh -i /app/private_key
사용자 프로필에 저장됩니다. 그러나 이 설정은 쉘 스크립트에는 적용되지 않습니다(참조:여기예를 들어) 명시적으로 호출해야 합니다.
ssh -i app/private_key
스크립트에서. 이로써 문제가 해결되었습니다.