รัน su -c มากกว่า ssh


10

ฉันพยายามตรวจสอบเวอร์ชั่น BIOS ของเซิร์ฟเวอร์ผ่าน SSH คำสั่งที่ต้องใช้สิทธิ์พิเศษ:

ssh remote-server su -c dmidecode

แต่แน่นอนล้มเหลวด้วยข้อผิดพลาด:

มาตรฐานในต้องเป็น tty

ฉันจะทำให้งานนี้ได้อย่างไร ฉันไม่สามารถใช้ sudo ได้และเมื่อฉันพยายามเข้าสู่ระบบในฐานะ root @ remote-server มันจะไม่ยอมรับรหัสผ่านที่ฉันใช้สำหรับคำสั่ง 'su' ฉันใช้ RedHat Enterprise Linux 4


ฉันยังอยากจะขอแนะนำให้มองในการใช้ sudo แทน "su -c"
wfaulk

1
ตามที่ฉันระบุ "ฉันไม่สามารถใช้ sudo"
aaron

ฉันชอบที่จะได้รับข้อมูลเพิ่มเติมว่าทำไม "ฉันไม่สามารถใช้ sudo" เป็นกรณี
dannysauer

@dannysauer ไม่ใช่ทุก OS ที่มี ฉันอยู่ที่นี่พยายามที่จะแก้ปัญหาเดียวกันยกเว้นว่าฉันไม่ได้อยู่ใน RedHat เช่น OP ฉันอยู่ในตัวแปร unix ที่ไม่มี sudo ฉันอยากรู้ว่าทำไม OP ไม่สามารถใช้กับ RedHat ได้ แต่ฉันรู้สึกขอบคุณต่อคำถามที่ได้รับการถาม
Loduwijk

sudo สร้างขึ้นในชุดรูปแบบ UNIX ทั้งหมดที่ฉันคุ้นเคย แต่ฉันจะยอมรับว่าไม่ได้ติดตั้ง (หรือกำหนดค่า) ในทุกรุ่น ฉันอยากรู้มากขึ้นว่าทำไมมันไม่ได้กำหนดค่าที่นั่น (ฉันคิดว่า - มันไม่กี่ปีที่ผ่านมา) : D
dannysauer

คำตอบ:


13

ใช้-tเพื่อบังคับ ssh เพื่อจัดสรร tty:

ssh -t -t remote-user su -c dmidecode

คุณอาจพิจารณาอนุญาตให้รูทไปยัง ssh ได้โดยตรง หากคุณใช้การรับรองความถูกต้องของรหัสสาธารณะสิ่งนี้อาจมีความปลอดภัยมากกว่าเนื่องจากคุณจะไม่ใช้รหัสผ่าน หากคุณตัดสินใจทำสิ่งนี้ให้ลองปิดกั้นการเข้าสู่ระบบรูทจากที่ใดก็ได้ยกเว้นที่อยู่ IP ที่เชื่อถือได้ของคุณโดยใส่ต่อไปนี้ใน/etc/security/access.conf:

+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL

และตรวจสอบให้แน่ใจUsePAMว่าไม่ได้ปิดการใช้งานsshd_config


2
เหตุผลใดที่คุณรวมสอง-ts ไว้ในตัวอย่างของคุณ?
wfaulk

2
ตามหน้าคนตัวเลือกหลาย -t "การจัดสรรแรง TTY แม้ว่า SSH ไม่มี TTY ท้องถิ่น"
เฮลธ์

สิ่งนี้ไม่ได้ผลสำหรับฉันใน Fedora มันอนุญาตให้สคริปต์แจ้งรหัสผ่านให้ฉัน แต่รหัสผ่านของฉันแสดงเป็นข้อความธรรมดาและเมื่อฉันกด Enter มันจะหยุดทำงาน
Cerin

@ Chris นั่นเป็นปัญหาที่แตกต่าง ลองถามคำถามใหม่
geocar

@Heath ขอบคุณสำหรับความคิดเห็นเกี่ยวกับ double -t ที่เหมาะกับฉันใน Centos
Paul Sheldrake

0

คุณไม่สามารถลงชื่อเข้าใช้รีโมตเซิร์ฟเวอร์ในฐานะผู้ใช้มาตรฐานแล้วใช้sudo ได้หรือไม่

คุณสามารถลองอ้างคำสั่งที่จะดำเนินการโดย ssh เช่นเดียวกับใน

ssh remote-server 'su -c dmidecode'

หรือ

ssh remote-server "su -c dmidecode"

3
-1 เนื่องจากการอ้างถึงคำสั่งจะไม่ช่วยแก้ไขการขาดเทอร์มินัล +1 สำหรับการแนะนำ sudo มันล้าง
wfaulk

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