매우 이상한 문제가 있습니다. ssh (공개 키 인증 사용)를 통해 원격 호스트에서 명령을 실행하는 작은 bash 스크립트를 만들었습니다.
명령 줄에서이 스크립트를 수동으로 실행하면 정상적으로 작동하지만 /etc/cron.hourly에 배치하면 Permission denied, please try again.
오류 가 발생하여 실패 합니다.
- 스크립트를 사용하여 키를 명시 적으로 설정했습니다
ssh -i /root/.ssh/id_rsa user@remote "command"
.; - 스크립트가 루트로 실행 중입니다 (
echo `id` > /tmp/whoami.log
다시 확인하기 위해 추가했습니다 ). 과 - ssh 키는 비밀번호로 보호되지 않습니다 ...
시스템은 Ubuntu 12.04 서버이며 원격 측에서 문제를 해결할 수있는 많은 액세스 권한이 없지만 명령 줄에서 ssh를 수동으로 실행하거나 동일한 bash 스크립트를 실행합니다.
왜 이런 일이 발생하는지 또는 어떻게 고칠 수 있습니까?
최신 정보
내가 잘못 알고 ssh 키 가 암호로 보호되어 (ssh-agent를로드하는 키 체인 사용) 스크립트에서 실패했지만 bash 세션에서 실행되지 않는 이유는 무엇입니까? . ~/.keychain/$HOSTNAME-sh
내 스크립트에 추가 하면 문제가 해결되었습니다 (@grawity 덕분에 올바른 방향으로 나를 가리키고 포괄적 인 답변을 제공했습니다).
SSH_AUTH_SOCK
관련 되어 있는지 확실하지 않습니다 (물론 시도해도 행복합니다). 키 파일에 직접 액세스하고 있으며 키 파일이 비밀번호로 보호되어 있지 않습니다. KRB5CCNAME
빠른 검색에서 보았 듯이 이것은 Kerberos와 관련이 있습니다. 다시 –이 문제와의 관련성은 보이지 않지만 여기서 뭔가
-v
해당 ssh
명령에 옵션을 추가하면 더욱 좋습니다 .
ssh -i
두 경우 모두 명령을 사용하여 키를 명시 적으로 사용합니다 ... 스크립트에서 해당 변수를 설정 해제하고 참조하십시오. 좋은 제안 추가 -v
-나도 추가하겠습니다.
SSH_AUTH_SOCK
및KRB5CCNAME
환경 변수 후에 다시 테스트하십시오 .