명령은 작동하지만 스크립트에서 실행할 때 권한 거부 오류가 발생합니다.

명령은 작동하지만 스크립트에서 실행할 때 권한 거부 오류가 발생합니다.

아래 명령은 내 로컬 호스트에서 제대로 실행되고 원하는 출력을 제공합니다. 아래를 참조하세요

$ 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

스크립트에서. 이로써 문제가 해결되었습니다.

관련 정보