วิธีการปิดการใช้งานการเข้าสู่ระบบ SSH ด้วยรหัสผ่านสำหรับผู้ใช้บางคน?


165

บน Linux (Debian Squeeze) ฉันต้องการปิดใช้งานการเข้าสู่ระบบ SSH โดยใช้รหัสผ่านกับผู้ใช้บางคน (กลุ่มที่เลือกหรือผู้ใช้ทั้งหมดยกเว้นรูท) แต่ฉันไม่ต้องการปิดใช้งานการเข้าสู่ระบบโดยใช้ใบรับรองสำหรับพวกเขา

แก้ไข:ขอบคุณมากสำหรับคำตอบอย่างละเอียด! ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ทำงานบนเซิร์ฟเวอร์ของฉัน:

Match User !root
PasswordAuthentication no

... แต่สามารถถูกแทนที่ได้อย่างง่ายดายโดย

PasswordAuthentication no
Match User root
PasswordAuthentication yes

อาจเป็นเพราะการเยื้องของคุณ?
ไม่มี

7
เป็นมูลค่าการกล่าวขวัญว่าเส้นเหล่านั้นภายใต้การแข่งขันควรจะอยู่ท้ายไฟล์
zidarsk8

1
! root ยังใช้งานไม่ได้สำหรับฉัน วิธีที่สองทำกลอุบาย
natenho

ฉันเคยเห็นกรณีที่Match User "!root,*"ทำงาน
Roman Hocke

คำตอบ:


179

ลองMatchในsshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

หรือตามกลุ่ม:

Match Group users
    PasswordAuthentication no

หรือตามที่ระบุไว้ในความคิดเห็นโดยการปฏิเสธ:

Match User !root
    PasswordAuthentication no

โปรดทราบว่าการจับคู่นั้นจะมีผล"จนกว่าจะถึงบรรทัดการแข่งขันอื่นหรือสิ้นสุดไฟล์ (การเยื้องไม่สำคัญ)


4
ชอบMatch user !rootสำหรับกรณีนี้
84104

1
เยี่ยมมากฉันไม่รู้เกี่ยวกับไวยากรณ์ของการจับคู่ หนึ่งข้อเสนอแนะที่ฉันจะทำก็คือถ้านี่เป็นเซิร์ฟเวอร์สาธารณะฉันไม่อนุญาตให้ล็อกอินรูทผ่าน SSH เลย อาจจะไม่ได้เป็นเรื่องใหญ่ถ้าเป็นภายในแม้ว่า ..
Safado

4
@SpacemanSpiff นั่นคือสิ่งที่) รหัสผ่านที่แข็งแกร่งและ b) denyhosts / fail2ban สำหรับ
ceejayoz

2
@ deed02392 คุณสามารถพิจารณารหัสที่จะเป็นรหัสผ่านที่แข็งแกร่งจริงๆหากคุณต้องการ
ceejayoz

4
มันแข็งแกร่งขึ้นมากมันไม่ได้อยู่ในสวนบอลเดียวกันนั่นคือประเด็นของฉัน ควรปิดใช้งานการรับรองความถูกต้องด้วยรหัสผ่านสำหรับรูทด้วยและอนุญาตให้ใช้คีย์ได้เฉพาะการล็อกอิน
deed02392

21

Matchในการsshd_configทำงานได้ดี คุณควรใช้Match allเพื่อยุติการจับคู่บล็อกหากคุณใช้ openssh 6.5p1 ขึ้นไป ตัวอย่าง:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all

มันไม่ได้ทำงานสำหรับฉัน ...
ดิมิท

3

มีสองสามวิธีที่คุณสามารถทำได้ - ก่อนอื่นคุณสามารถรัน sshd daemon ตัวที่สองบนพอร์ตอื่นด้วยการตั้งค่าที่แตกต่างกัน - มันเป็นบิตของการแฮ็ค

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


-1

คุณสามารถไปที่ไฟล์ / etc / ssh / sshd_config และเพิ่มบรรทัดในการอนุญาต -> AllowUsers user1 เพื่อปฏิเสธ ---> DenyUsers user2

เราสามารถอนุญาต / ปฏิเสธการเข้าสู่ระบบสำหรับชุดโฮสต์ที่เฉพาะเจาะจงโดยใช้ไฟล์ hosts.allow หรือ hosts.deny ที่อยู่ในโฟลเดอร์ / etc


-1

เนื่องจากเหตุผลด้านความปลอดภัยคุณอาจต้องปิดกั้นการเข้าถึง SSH ของผู้ใช้บางรายไปยังกล่อง Linux

แก้ไขไฟล์ sshd_config บางครั้งตำแหน่งจะแตกต่างกันไปขึ้นอยู่กับการแจกจ่าย Linux แต่โดยปกติจะอยู่ใน / etc / ssh /

เปิดไฟล์ขึ้นในขณะที่เข้าสู่ระบบในฐานะ root:

# vi /etc/ssh/sshd_config

แทรกบรรทัดต่อท้ายไฟล์กำหนดค่า: -

DenyUsers username1 username2 username3 username4

บันทึกและรีสตาร์ทบริการ SSH โดยทั่วไปชื่อผู้ใช้ 1, ชื่อผู้ใช้ 2, ชื่อผู้ใช้ 3 และชื่อผู้ใช้ 4 เข้าสู่ระบบ SSH ไม่ได้รับอนุญาต

เรียกใช้คำสั่งด้านล่างเพื่อเริ่มต้นเดียวกัน: -

# systemctl restart sshd

มีการดำเนินการตามข้อกำหนด โปรดรับ ssh จากผู้ใช้รายนั้นและคุณจะได้รับข้อผิดพลาด "การเข้าถึงถูกปฏิเสธ"


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