อนุญาตให้รูทเข้าสู่ระบบผ่าน ssh ด้วยการพิสูจน์ตัวตนแบบใช้คีย์เท่านั้น


49

ผมมีข้อสงสัยบางประการเกี่ยวกับการกำหนดค่าเซิร์ฟเวอร์ SSH /etc/ssh/sshd_configบางอย่างบน ฉันต้องการพฤติกรรมต่อไป:

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

ถ้าฉันตั้งค่าPasswordAuthentication noจุดแรกของฉันเป็นที่พอใจ แต่ไม่ใช่ที่สอง มีวิธีการตั้งค่าPasswordAuthentication noเฉพาะสำหรับรูทหรือไม่

คำตอบ:


78

คุณสามารถทำได้โดยใช้PermitRootLoginคำสั่ง จากsshd_configmanpage:

ระบุว่ารูทสามารถล็อกอินโดยใช้ ssh (1) อาร์กิวเมนต์ต้องเป็น "ใช่", "ไม่มีรหัสผ่าน", "บังคับใช้คำสั่งเท่านั้น" หรือ "ไม่" ค่าเริ่มต้นคือ“ ใช่”

หากตัวเลือกนี้ถูกตั้งค่าเป็น "ไม่มีรหัสผ่าน" การตรวจสอบรหัสผ่านจะถูกปิดใช้งานสำหรับรูท

สิ่งต่อไปนี้จะทำให้สำเร็จในสิ่งที่คุณต้องการ:

PasswordAuthentication yes
PermitRootLogin without-password

1
ฉันลองสิ่งนี้บน Debian และตรวจสอบกับservice ssh restartบนเซิร์ฟเวอร์และจากนั้นฉันพยายามเชื่อมต่อกับลูกค้าโดยไม่ใช้รหัสของฉันด้วยssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hostและแน่นอนไม่สามารถเข้าสู่ระบบด้วยรหัสผ่าน แต่ทำได้ด้วยกุญแจสำหรับผู้ใช้รูท
bastian

ใช่ แต่ถ้าคุณเพียงแค่ทำสิ่งนี้แทนคุณสามารถเข้าสู่ระบบด้วยรหัสผ่าน: ssh -o PreferredAuthentications=password root@hostไม่ปลอดภัยโดยเฉพาะอย่างยิ่ง imho
geoidesic

2
ในปี 2019 เป็น "PermitRootLogin ห้ามรหัสผ่าน" เก่าโดยไม่ใช้รหัสผ่านเป็นชื่อแทนที่ไม่รองรับ
vbraun

10

คุณสามารถใช้Matchบล็อกเพื่อกำหนดค่าตัวเลือกบางอย่างต่อผู้ใช้หรือกลุ่มการรับรองความถูกต้องหรือต่อที่อยู่ IP หรือชื่อโฮสต์ของต้นกำเนิดของการเชื่อมต่อ

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
ฉันจัดการเพื่อล็อคฉันจากเซิร์ฟเวอร์ ssh ของฉันทำเช่นนี้
Richard Metzler

นี่เป็นวิธีที่ดีที่สุดหากคุณไม่ต้องการให้พรอมต์รหัสผ่านปรากฏขึ้นสำหรับรูท
Leo

สิ่งนี้ยังปิดกั้นฉัน ฉันคิดว่ามันอาจเป็นไปในลำดับที่ไม่ถูกต้อง ...
Gary

3

ฉันมีวิธีการที่เข้มงวดยิ่งขึ้นในการให้สิทธิ์รูทบนเซิร์ฟเวอร์ของฉันซึ่งอาจน่าสนใจสำหรับคนหวาดระแวงอย่างฉัน ระวังสิ่งที่คุณทำและในลำดับใด ๆ มิฉะนั้นคุณอาจท้ายด้วยระบบที่คุณไม่สามารถเข้าถึงรูทได้

  • สร้างกลุ่มที่เฉพาะเจาะจงsugroupซึ่งสมาชิกจะได้รับอนุญาตให้กลายเป็นรูทและอนุญาตเฉพาะการรับรองความถูกต้องที่สำคัญสำหรับกลุ่มนี้โดยใส่บรรทัดต่อไปนี้ไว้ท้าย sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • วางคำสั่งในauth required pam_wheel.so group=sugroup /etc/pam.d/suอาจมีอยู่แล้วและคุณเพียงแค่ต้องไม่แสดงความคิดเห็น สิ่งนี้ปฏิเสธการเข้าถึงรูทสำหรับผู้ใช้ทั้งหมดที่ไม่ใช่สมาชิกของ sugroup
  • เลือกรหัสผ่านที่รัดกุม :)
  • ตรวจสอบว่าวิธีการรับรองความถูกต้องใหม่ของคุณใช้งานได้หรือไม่และหาก:
  • ปฏิเสธการเข้าสู่ระบบรากโดยตรงผ่านทาง SSH โดยใช้ในPermitRootLogin no/etc/ssh/sshd_config

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

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