루트로 실행되는 스크립트가 있습니다. SSH를 통해 원격 호스트에 연결하고 사용자 gol로 스크립트를 실행합니다. 사용자(gol)의 SSH 키를 원격 호스트에 추가했습니다. 그러나 스크립트가 루트로 실행 중이므로 여전히 비밀번호를 묻는 메시지가 표시됩니다. 스크립트 내용은 다음과 같습니다
ssh gol@remotehost '/home/scripts/script1.sh'
그래서 ssh 명령을 실행하기 전에 로컬 사용자로 전환하도록 명령을 변경했지만(gol 사용자가 ssh 키를 추가했기 때문에) 실패했습니다.
su - gol -c ssh gol@remotehost '/home/scripts/script1.sh'
이 스크립트에는 다른 스크립트가 있으므로 루트로 실행해야 합니다.
답변1
문제는 root
클라이언트가 루트로 실행되기 때문에 기본적으로 SSH가 개인 키를 사용하려고 시도한다는 것입니다. 여전히 루트로 실행하고 싶지만 gol의 개인 키를 사용하려는 경우 루트에 액세스 권한이 있으므로 가능할 수 있습니다.모든 것. 따라서 gol
개인 키를 사용하여 ssh를 루트로 호출하려면 개인 키가 어디에 있는지 ssh에 알려주기만 하면 됩니다. 귀하의 시스템은 모르지만 아마도 여기에 있을 것입니다.
/home/gol/.ssh/id_rsa
사용할 개인 키를 ssh에 알릴 수 있습니다.
ssh -i /home/gol/.ssh/id_rsa gol@remotehost '/home/scripts/script1.sh'
또는 올바르게 인용하여 원래 시도한 방식을 사용할 수 있습니다.
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
답변2
따옴표를 추가하여 작동하게 만들었습니다.
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
업데이트해 주셔서 감사합니다. Philip!
나는 따옴표를 추가하여 이를 달성했기 때문에 Philip의 해결 방법을 아직 시도하지 않았습니다.