วิธีการเปิดใช้งานคำสั่ง sudo ผ่าน SSH โดยไม่ถามรหัสผ่าน?


13

ฉันมีเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B (ทั้ง Ubuntu 10.04 LTS) ทำงานต่าง ๆ เซิร์ฟเวอร์ A จำเป็นต้องกระตุ้นเซิร์ฟเวอร์ B ซึ่งสร้างไฟล์และ scp ของมันกลับไปที่เซิร์ฟเวอร์ A เมื่อเสร็จสิ้น ทั้งหมดนี้เป็นของในบ้านและฉันก็ไม่ได้กังวลเกี่ยวกับปัญหาด้านความปลอดภัย การแลกเปลี่ยนคีย์ SSH ได้ดำเนินการระหว่างเซิร์ฟเวอร์ A และ B แล้วและทำงานได้ดี

บนเซิร์ฟเวอร์ B สคริปต์generateOfflineSigดูเหมือนว่า

#!/bin/bash
echo "in script"
sudo apt-offline set offline_package.sig --install-packages "$0"
echo "after sudo"
scp offline_package.sig jeff@servera:/tmp

บนเซิร์ฟเวอร์ B visudo ก็มีรายการนี้เช่นกัน:

jeff ALL=NOPASSWD: ALL

จะทำงานได้อย่างไรหากฉันใช้งานsudo lsเซิร์ฟเวอร์ B ... ไม่ถามรหัสผ่าน

น่าเสียดายที่ SSH มักถามรหัสผ่านบนเซิร์ฟเวอร์ A:

jeff@servera:~$ ssh -t jeff@serverb /home/jeff/generateOfflineSig "incron"
in script
[sudo] password for jeff:

ความคิดใด ๆ กระบวนการนี้ไม่สามารถถูกขัดจังหวะด้วยการป้อนรหัสผ่าน


ไม่แน่ใจ 100% ของ/etc/sudoersไวยากรณ์ # %wheel ALL=(ALL) NOPASSWD: ALLแต่ไฟล์ของฉันมีสาย บางทีสายของคุณควรจะเป็นjeff ALL=(ALL) NOPASSWD: ALLอย่างไร
snapshoe

ไม่คำสั่งระยะไกลทั้งหมดจะต้องอยู่ในเครื่องหมายคำพูด? คุณอาจเรียกใช้งานสคริปต์ใน Sever A
TheLQ

อันที่จริง ... ฉันคิดว่า snapshoe กำลังจะมีบางอย่าง ฉันจะตอบคำถามของฉันเองบิตในภายหลัง ...
เจฟฟ์

คำตอบ:


16

ดูเหมือนว่าฉันมี "ตัวพิมพ์" ใน/etc/sudoersไฟล์ ...

jeff ALL=NOPASSWD: ALL

จำเป็นต้องอยู่ที่ท้ายไฟล์ ความช่วยเหลือของ Ubuntuบอกว่าเพิ่ม (... ) ไปยังจุดสิ้นสุดของไฟล์เท่านั้น (หากไม่สิ้นสุดก็สามารถทำให้เป็นโมฆะได้ในภายหลัง)

หลังจากนั้นรหัสผ่านจะไม่ถูกถามถึง "คำสั่ง sudo ของ jeff ไม่ว่าจะเป็นแบบโลคัลหรือผ่าน SSH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.