จำกัด การเข้าถึง SSH โดยใช้รหัสผ่านต่อผู้ใช้หนึ่งคน แต่อนุญาตให้มีการตรวจสอบสิทธิ์ที่สำคัญ


21

เป็นไปได้หรือไม่ที่จะปิดการใช้งานการเข้าถึง PASSWORD SSH ให้กับผู้ใช้ แต่จะอนุญาตให้ใช้การตรวจสอบความถูกต้องของคีย์ต่อผู้ใช้แต่ละคน? ฉันหมายถึงฉันมี userA ที่ฉันไม่ต้องการให้การเข้าถึงโดยใช้รหัสผ่าน แต่ฉันไม่ต้องการให้เขาใช้การรับรองความถูกต้องของคีย์เพื่อเข้าถึงเซิร์ฟเวอร์เท่านั้น ขอบคุณ


คำตอบ:


49

คุณสามารถเพิ่มส่วน "จับคู่" เพื่อจับคู่กับผู้ใช้หรือกลุ่มที่ด้านล่างของ sshd_config เช่น:

Match user stew
PasswordAuthentication no

หรือ

Match group dumbusers
PasswordAuthentication no

9
ฉันจะหลีกเลี่ยงการเยื้องเนื่องจากมันชี้ให้เห็นว่ามีเพียงเส้นที่เยื้องเท่านั้นที่ได้รับผลกระทบจากMatchเมื่อในความเป็นจริงการกำหนดค่าทั้งหมดจะได้รับผลกระทบจนกว่าจะมีMatchคำสั่งต่อไป อาจสร้างความสับสนให้กับคนที่ไม่คุ้นเคยกับไวยากรณ์
Michael Mior

2
@MichaelMior มีวิธีในการ "EndMatch" หรือไม่
Nick T

4
@NickT Matchทำงานได้จนกว่าคำหลักถัดไปMatchหรือHostคำหลัก Match user *คุณก็สามารถใช้
Michael Mior

@MichaelMior นี่หมายความว่าหากคุณใช้Match user ZaQwEdCxSคุณสามารถแสดงชุดของบรรทัดการกำหนดค่าที่ไม่มีใครสามารถใช้งานได้ชั่วคราวหรือถาวร?
Tripp Kinetics

หมายความว่าทุกบรรทัดการกำหนดค่าหลังจากนั้นจะมีผลกับผู้ใช้ที่ตั้งชื่อZaQwEdCxSเท่านั้น หากคุณมีคำถามอื่นคุณควรถามคำถามใหม่
Michael Mior

4

เพียงล็อครหัสผ่านของผู้ใช้ที่คุณไม่ต้องการเข้าสู่ระบบด้วยรหัสผ่าน:

usermod -L <user>

จากนั้นวางกุญแจสาธารณะที่ถูกต้องใน.ssh/authorized_keysไฟล์ของพวกเขาและพวกเขาจะสามารถเข้าสู่ระบบด้วยกุญแจส่วนตัวที่สอดคล้องกัน แต่ไม่ใช่ด้วยรหัสผ่าน

หมายเหตุ:สิ่งนี้จะทำให้แตก sudo เว้นแต่ผู้ใช้มี NOPASSWD: ในรายการ visudo


8
นั่นก็จะทำลาย sudo อาจจะไม่ใช่ปัญหาในกรณีนี้ แต่มันก็พูดถึง
EEAA

ใช่นั่นเป็นเรื่องจริง ฉันควรจะกล่าวถึงมัน
Oliver

1
การตั้งค่าบางอย่างของ OpenSSH (เช่นฉันคิดว่า Ubuntu 14.04 เป็นค่าเริ่มต้น) ไม่อนุญาตให้ผู้ใช้ที่ถูกล็อคไม่ได้รับอนุญาตผ่านแม้กระทั่ง
Nils Toedtmann

@NilsToedtmann คุณสามารถอ้างอิงแหล่งที่มาสำหรับการยืนยันได้หรือไม่? นี่จะเป็นสิ่งสำคัญมากที่จะต้องทราบในคำตอบเช่นกันหากเป็นเช่นนั้น
Metagrapher

-3

คุณควรตรวจสอบ

/etc/ssh/sshd_config

ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือ

PasswordAuthentication yes

เปลี่ยนเป็นไม่ใช่และอย่าลืมรีสตาร์ท sshd


2
ฉันรู้เรื่องนี้ - นี่คือการตั้งค่าทั่วโลก - ฉันต้องการตัวเลือกที่ละเอียดยิ่งขึ้น - นั่นคือเหตุผลที่ฉันพูดว่า "พื้นฐานต่อผู้ใช้" - ฉันต้องการสิ่งนี้สำหรับผู้ใช้บางคนเท่านั้น (ใช้สำหรับการสื่อสารภายในกลุ่มระหว่างเซิร์ฟเวอร์ในคลัสเตอร์) - ไม่ใช่สำหรับผู้ใช้ทั้งหมด
gyre

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