일반 텍스트 비밀번호를 사용하여 동일한 서브넷의 다른 클라이언트 서버에 SSH로 접속한 후 루트로 sudo하여 명령을 닫고 다시 시작하려고 합니다. 의도적으로 SSH 키를 추가하지 않았습니다. 나는 노력했다
ssh -tt [username]@[host] "sudo su -; service snmpd stop; reboot ";
로그인할 때 sudo의 사용자 이름과 비밀번호를 어떻게 전달합니까?
답변1
노트:여기에 제공된 답변이 작동해야 합니다. 그러나 모범 사례가 위반되었습니다. 또한 이 답변에서는 sshpass
명령이 실행될 호스트에서 명령을 사용할 수 있다고 가정합니다. 사용자는 한 번 사용된 후 삭제된다는 사실을 인지합니다.
sshpass -pPASSWORD ssh -tt [username]@[host] 'echo PASSWORD | sudo -S -s /bin/bash -c "service snmpd stop; reboot"'
최소한 사용자는 SSH 로그인을 위해 키 교환을 사용해야 하며 사용자가 비밀번호 없이 sudo를 통해 필요한 명령을 실행할 수 있도록 허용해야 합니다.
답변2
sshpass라는 프로그램을 사용하여 SSH 비밀번호를 전달해 보세요. 다음과 같이 사용할 수 있습니다.
SSHPASS='sshpassword'
remoterootpass='remoterootpass'
sshpass -e ssh user@host <'EOF'
su -
echo "$remoterootpass"
service snmpd stop
reboot
EOF
원격 명령을 쉘 스크립트에 넣고 다음과 같이 호출할 수도 있습니다.
SSHPASS='sshpassword'
cat myscript.sh | sshpass -e ssh user@host