ไม่ใช่ ssh sudo …จะแจ้งให้ใส่รหัสผ่านเป็นข้อความธรรมดา


9

ฉันใช้คำสั่ง SSH แบบไม่โต้ตอบ การตรวจสอบความถูกต้อง ssh ได้รับการดูแลอย่างดีผ่านตัวแทน ssh แต่ถ้าฉันเรียกใช้คำสั่งที่ต้องใช้ sudo แล้วรหัสผ่านพร้อมท์ใน terminal ของฉันเป็นข้อความธรรมดา ตัวอย่างเช่น:

ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"

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

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

คำตอบ:


13

การใช้ssh -t:

ผู้ชาย

-t   Force pseudo-tty allocation. This can be used to execute arbitrary 
     screen-based programs on a remote machine, which can be very useful, 
     e.g. when implementing menu services. Multiple -t options force tty 
     allocation, even if ssh has no local tty.

ดังนั้นคำสั่งของคุณจะเป็น

ssh remotemachine -t "sudo -u www mkdir -p /path/to/new/folder"

หากคุณไม่ต้องการที่จะป้อนรหัสผ่านที่คุณสามารถ (ถ้าคุณได้รับอนุญาตให้) แก้ไขโดยใช้คำสั่งsudoersvisudo

เพิ่มพารามิเตอร์NOPASSWD:ตัวอย่างเช่น

username ALL=(ALL) NOPASSWD: /bin/mkdir

หากคุณไม่สามารถแก้ไข / etc / sudoers ได้คุณสามารถใช้sudo -S:

ผู้ชาย sudo

-S      The -S (stdin) option causes sudo to read the password from
        the standard input instead of the terminal device.  The
        password must be followed by a newline character.

ด้วยคำสั่งนั้นจะเป็น

echo "your_password" | ssh remotemachine -t \
     "sudo -S -u www mkdir -p /path/to/new/folder"

โปรดจำไว้ว่านี่จะเพิ่มรหัสผ่านของคุณลงในประวัติคำสั่งเชลล์ของคุณ (ด้วย bash ซึ่งจะเป็น~/.bash_historyไฟล์)

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