systemctl을 사용하여 원격 호스트의 비대화형 명령에 대한 비밀번호를 지정하려면 어떻게 해야 합니까?

systemctl을 사용하여 원격 호스트의 비대화형 명령에 대한 비밀번호를 지정하려면 어떻게 해야 합니까?

이것이 내가 하고 싶은 일이다. 여러 호스트에 분산된 서비스에 대한 .service 파일 세트가 있습니다. 스크립트를 실행할 때 각 호스트의 루트 비밀번호를 입력하지 않고도 모든 서비스를 시작하거나 중지할 수 있는 쉘 스크립트를 작성하고 싶습니다.

예를 들어 스크립트는 다음 명령을 실행합니다.

systemctl -H host1 start service1.service

--no-ask-password 옵션이 있지만 이는 systemctl을 실행하기 위해 운영 체제를 인증하는 대신 서비스 장치에서 요청할 때 비밀번호를 묻거나 제공하지 않기 때문에 다릅니다.

즉, 다른 인증 방법이 다른 호스트에서 동일한 사용자를 자동으로 인증할 수 없는 상황에서 비밀번호를 지정해 보려고 합니다(예: -P {passwd} 옵션이 있는 경우).

누구든지 내가 이것을 달성할 수 있는 방법에 대한 아이디어를 가지고 있습니까?

답변1

"명령줄에 비밀번호를 입력하는 것"은 매우 나쁜 생각입니다. ssh이것을 처리할 수 있습니다.

man에서 제작한 많은 페이지를 읽어보세요 man -k ssh.

그런 다음 일단 실행하면 다음과 ssh같습니다 ssh-add.

man ssh-copy-id각 클라이언트 노드에 ID를 복사하려면 읽어보세요 .sshroot

이제 ssh -l root client1 systemctl ...사용할 수 있습니다.

자동화를 더욱 발전시키려면 계속 읽어보세요 man ssh_config.

예를 들어 별칭을 추가하세요.

alias c1="ssh -l root client1"
# usage:  c1 systemctl ...
#
 alias c1sys= "ssh -l root client1 systemctl ..."

당신을 위한 ~/.bashrc.

관련 정보