ฉันต้องเขียนสคริปต์เพื่อให้เพื่อนร่วมงานและตัวฉันเองสามารถเริ่มบริการต่างๆ บนเซิร์ฟเวอร์หลายเครื่องได้เราทุกคนเชื่อมต่อกับเซิร์ฟเวอร์ด้วย LDAP ดังนั้นฉันจึงต้องการให้สคริปต์ของฉันเชื่อมต่อผู้ใช้ LDAP ของเรากับเซิร์ฟเวอร์ จากนั้นใช้ sudo เพื่อเริ่มบริการใหม่ (ฉันสามารถเขียนสคริปต์บนเซิร์ฟเวอร์แต่ละเครื่องเพื่อเริ่มบริการทั้งหมดที่จำเป็นใหม่) ตอนนี้สคริปต์เพียงแค่เรียกใช้คำสั่งเช่น
ssh -t user@host "sudo service XXX รีสตาร์ท"
ปัญหาคือสำหรับแต่ละเซิร์ฟเวอร์ สคริปต์จะขอรหัสผ่านผู้ใช้สองครั้ง (หนึ่งสำหรับการเชื่อมต่อ ssh และสองสำหรับคำสั่ง sudo) การเดาครั้งแรกของฉันคือการแจ้งให้ผู้ใช้เข้าสู่ระบบและรหัสผ่านด้วย read -s -p จากนั้นใช้ตัวแปรเพื่อเข้าสู่ระบบโดยอัตโนมัติด้วย ssh เห็นได้ชัดว่าการคาดหวังคือวิธีการทำเช่นนี้ แต่ฉันไม่พบวิธีแจ้งรหัสผ่านอย่างปลอดภัยในสคริปต์คาดหวังหรือแจ้งในสคริปต์ทุบตีและส่งตัวแปรอย่างปลอดภัยในสคริปต์คาดหวัง
ฉันค้นหาวิธีแก้ปัญหาเช่น pssh, cluster ssh ซึ่งดูเหมือนว่าจะใช้งานได้ แต่ไม่ใช่กับ sudo ฉันเข้าใจว่าวิธีที่ดีที่สุดในการดำเนินการนี้คือการใช้คีย์ ssh แต่เนื่องจากผู้ใช้หลายคนจำเป็นต้องใช้สคริปต์ ฉันจึงต้องการใช้การเข้าสู่ระบบ/รหัสผ่านของ LDAP