일반 텍스트 원격 sudo를 사용하여 루트로 이동한 후 명령을 실행하세요.

일반 텍스트 원격 sudo를 사용하여 루트로 이동한 후 명령을 실행하세요.

일반 텍스트 비밀번호를 사용하여 동일한 서브넷의 다른 클라이언트 서버에 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

관련 정보