คำสั่งสามารถเรียกใช้ผ่าน ssh กับผู้ใช้ nologin ได้หรือไม่?


13

หากผู้ใช้มีloginShell=/sbin/nologinมันยังคงเป็นไปได้

ssh user@machine [command]

สมมติว่าผู้ใช้มีคีย์ ssh ที่เหมาะสมในโฮมไดเร็กตอรี่ที่สามารถใช้ในการรับรองความถูกต้อง?

เป้าหมายของฉันคือทำให้ผู้ใช้เป็น nologin แต่ยังสามารถเรียกใช้คำสั่งบนเครื่องอื่น ๆ สองสามเครื่องบนเครือข่าย (คล้ายกับการใช้งานผ่าน 'sudo -u') และฉันสงสัยว่านี่เป็นหลักสูตรที่สมเหตุสมผลหรือไม่


1
มันควรจะทำงาน commandมีการเรียกใช้แทนของเปลือกเข้าสู่ระบบ
orion

1
สิ่งนี้เอาชนะวัตถุประสงค์ของการกำหนดค่า/sbin/nologinเป็นเชลล์ หากข้อกังวลของคุณคือความปลอดภัยของบัญชีการปิดใช้งานการตรวจสอบรหัสผ่านและการใช้คีย์ ssh ก็เพียงพอแล้ว
Creek

@Creek มีความแตกต่างระหว่างล็อกอินเชลล์และอินสแตนซ์อื่น ๆ ของเชลล์ ดังนั้นสิ่งที่เขาถามไม่จำเป็นต้องเอาชนะวัตถุประสงค์ของ / sbin / nologin อาจเป็นเพราะเขาต้องการทำงานบางอย่างนอกบริบทของเชลล์ล็อกอิน
Michael Martinez

7
@orion ผิด คำสั่งถูกเรียกใช้งานโดยเชลล์ล็อกอิน
Gilles 'หยุดชั่วร้าย'

@MichaelMartinez ในบริบทของตัวอย่างถ้าเชลล์ของผู้ใช้เป็น/sbin/nologinผู้ใช้จะไม่สามารถเข้าสู่ระบบหรือรันคำสั่งบนเครื่อง cronjobs สามารถรันได้ในฐานะผู้ใช้และsftpสามารถกำหนดค่าให้เปิดเซสชัน แต่การเปิดเชลล์ผ่าน ssh จะไม่เกิดขึ้น
Creek

คำตอบ:


17

การตั้งค่า/sbin/nologinเป็นเชลล์ของผู้ใช้ (หรือ/bin/falseหรือ/bin/trueซึ่งเกือบเทียบเท่า ) ห้ามมิให้ผู้ใช้ล็อกอินเพื่อรันคำสั่งใด ๆ SSH เรียกใช้เปลือกเข้าสู่ระบบของผู้ใช้เพื่อเรียกใช้คำสั่งเสมอดังนั้นคุณต้องตั้งค่าเปลือกเข้าสู่ระบบให้เป็นหนึ่งที่สามารถเรียกใช้คำสั่งบางอย่าง

มีเชลล์ที่ จำกัด จำนวนมากที่อนุญาตให้ผู้ใช้รันเพียงไม่กี่คำสั่ง ยกตัวอย่างเช่นrsshและscponlyมีทั้งเปลือกหอยดังกล่าวที่ให้ผู้ใช้สามารถเรียกใช้คำสั่งที่กำหนดไว้ล่วงหน้าไม่กี่ (เช่นscp, sftp-server, rsync, ... ) ดูเพิ่มเติมที่จำกัด การเข้าถึงของผู้ใช้ใน linuxและคุณต้องการเปลือกสำหรับ SCP หรือไม่?


ขอบคุณฉันสิ้นสุดการลาออกเพื่อให้เชลล์เข้าสู่ระบบบัญชีเพื่อให้สามารถเรียกใช้คำสั่งระยะไกลได้ ทางออกที่ดีกว่าน่าจะเป็น ssh ในฐานะผู้ใช้ปัจจุบันและเรียก sudo -u สำหรับคำสั่ง ssh แต่นั่นไม่สามารถใช้งานได้ในกรณีของฉัน
Centimane

1

ดูเหมือนว่าคำตอบคือไม่

ssh user@machine [command]

ด้วยปุ่ม ssh ในสถานที่เฉพาะผลลัพธ์ใน:

This account is currently not available

ดูเหมือนว่าฉันจะต้องให้สิทธิ์การเข้าถึงแก่ bash แทน


-4

ฉันไม่ทราบว่าเป็นไปได้หรือไม่ (ควรทดสอบได้ง่าย) แต่มีคุณลักษณะที่อาจตอบคำถามของคุณได้ในบางกรณีและในทุกกรณีจะช่วยแก้ปัญหาของคุณได้

คุณสามารถเพิ่มคำสั่งในบรรทัดสำคัญauthorized_keysได้ ในกรณีนั้นคำสั่งนี้จะถูกดำเนินการไม่มีอะไรอื่น ฉันคิดว่ามันใช้งานได้/sbin/nologinเพราะเชลล์ควรถูกละเว้นอยู่ดี

แต่คุณจะต้องใช้รหัสที่แตกต่างกันสำหรับทุกคำสั่งที่คุณอนุญาต


น่าเสียดายที่โซลูชันที่ฉันต้องการจะต้องมีความยืดหยุ่นมากกว่านี้
Centimane

ถ้าง่ายต่อการทดสอบคุณควรทดสอบก่อนเขียนคำตอบ
Michael Martinez

@MichaelMartinez มันเป็นหน้าที่ของผู้ถามที่จะทำการทดสอบง่าย ๆ ก่อนถาม การสังเกตไม่ใช่เรื่องยากที่ไม่ได้ตอบคำถาม แต่ทำข้อเสนอสำหรับปัญหาที่ทำให้เกิดคำถาม ซึ่งเหมาะอย่างยิ่งกับคำตอบ Downvoting นี้เป็นเพียงแค่โง่ คุณจะวิจารณ์คำตอบโดยไม่ต้องย่อหน้าแรกหรือไม่? เผง
Hauke ​​Laging

3
คำสั่งในauthorized_keysถูกเรียกใช้งานโดยล็อกอินเชลล์ดังนั้นไม่สิ่งนี้ไม่ทำงาน (ไม่ใช่หากไม่มีการกำหนดค่าเพิ่มเติมที่ไม่สำคัญ) (downvoting เป็นคำตอบที่ผิด "โง่" ได้อย่างไรโปรดเคารพผู้อื่น )
Gilles 'ดังนั้น - หยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.