วิธีแก้ไข Error Permission Denied (Publickey)

เผยแพร่แล้ว: 2024-01-10
สารบัญ
  • ทำไมมันถึงสำคัญ
  • พื้นฐานของการเชื่อมต่อคอมพิวเตอร์ที่ปลอดภัย
  • กุญแจสู่ล็อค: กุญแจสาธารณะ
  • เหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น?
  • วิธีการแก้ไข
  • เคล็ดลับพิเศษหากยังไม่ได้ผล
  • ทำให้มันทำงานได้อย่างราบรื่น
  • คำถามที่พบบ่อย
  • แหล่งข้อมูลอื่นๆ
  • ห่อ

คุณเคยเจอข้อความ “ข้อผิดพลาด: Permission Denied (Publickey)” ในขณะที่ใช้คอมพิวเตอร์ของคุณหรือไม่? นี่เป็นข้อผิดพลาดทั่วไปที่มักจะปรากฏขึ้นระหว่างการเชื่อมต่อ SSH ซึ่งเป็นวิธีที่คอมพิวเตอร์สื่อสารกันอย่างปลอดภัย

ให้คิดว่าเป็นการพยายามใช้กุญแจที่ไม่พอดีกับตัวล็อค เมื่อคุณเห็นข้อผิดพลาดนี้ แสดงว่าคอมพิวเตอร์ของคุณมีปัญหาในการสร้างลิงก์ที่ปลอดภัยกับคอมพิวเตอร์เครื่องอื่น เนื่องจากมีบางอย่างในการตั้งค่าความปลอดภัยไม่ตรงกัน

วิธีแก้ไขข้อผิดพลาด: การอนุญาตถูกปฏิเสธ (Publickey)

ทำไมมันถึงสำคัญ

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

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

พื้นฐานของการเชื่อมต่อคอมพิวเตอร์ที่ปลอดภัย

เรามาเจาะลึกว่า SSH คืออะไร

SSH ย่อมาจาก Secure Shell และเป็นวิธีพิเศษสำหรับคอมพิวเตอร์ในการพูดคุยกันทางอินเทอร์เน็ตด้วยวิธีที่ปลอดภัยเป็นพิเศษ ลองนึกภาพ SSH เหมือนอุโมงค์ส่วนตัวพิเศษที่เชื่อมต่อคอมพิวเตอร์สองเครื่อง

มีเพียงคอมพิวเตอร์สองเครื่องเท่านั้นที่สามารถส่งข้อความถึงกันผ่านอุโมงค์นี้ ทำให้การสนทนาของพวกเขาปลอดภัยจากผู้ดักฟัง

กุญแจสู่ล็อค: กุญแจสาธารณะ

เพื่อให้ทันเนลนี้ปลอดภัย SSH จะใช้สิ่งที่เรียกว่า 'การรับรองความถูกต้องของคีย์สาธารณะ' เหมือนมีรหัสผ่านพิเศษแต่อยู่ในรูปแบบของกุญแจ คอมพิวเตอร์ของคุณมีคีย์เฉพาะ (เรียกว่าคีย์สาธารณะ) ที่ใช้ร่วมกับคอมพิวเตอร์เครื่องอื่น

คิดว่ามันเหมือนกับการจับมือกันแบบลับๆ หากการจับมือไม่ตรงกัน การเชื่อมต่อจะไม่เกิดขึ้น และนั่นคือเมื่อคุณเห็นข้อความ “ข้อผิดพลาด: การอนุญาตถูกปฏิเสธ (สาธารณะ)”

เหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น?

เหตุใดคุณจึงเห็นข้อผิดพลาดนี้ มีเหตุผลทั่วไปสองสามประการ:

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

วิธีการแก้ไข

เมื่อคุณเข้าใจแล้วว่าเหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น เรามาพูดถึงวิธีแก้ไขกันดีกว่า นี่คือขั้นตอนบางส่วนที่คุณสามารถปฏิบัติตามได้:

ตรวจสอบสิทธิ์คีย์ SSH:

ตั้งค่าการอนุญาตที่ถูกต้องสำหรับคีย์ส่วนตัวของคุณ

 chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/autorized_keys

ตรวจสอบให้แน่ใจว่ารหัสสาธารณะของคุณอยู่ใน ~/.ssh/authorized_keys บนเซิร์ฟเวอร์ ถ้าไม่เช่นนั้น ให้เพิ่มโดยใช้:

แมว ~/.ssh/id_rsa.pub | ผู้ใช้ ssh@ชื่อโฮสต์ 'cat >> ~/.ssh/authorized_keys'

การดีบักการเชื่อมต่อ SSH

รัน ssh -vvv user@hostname เพื่อเปิดใช้งานโหมด verbose โดยให้การวินิจฉัยการเชื่อมต่อโดยละเอียด

ตรวจสอบการกำหนดค่าที่ถูกต้องบนเซิร์ฟเวอร์ โดยเฉพาะอย่างยิ่งสำหรับ PasswordAuthentication และ PubkeyAuthentication

cat ฯลฯ/ssh/sshd_config

โซลูชั่นเพิ่มเติม:

ตรวจสอบอีกครั้งว่าคุณใช้ชื่อผู้ใช้ที่ถูกต้องสำหรับการเชื่อมต่อ SSH

เริ่มบริการ SSH ใหม่เพื่อรีเฟรชการเชื่อมต่อ

 sudo systemctl restart sshd

ตรวจสอบพอร์ตการเชื่อมต่อ SSH ในไฟล์กำหนดค่า SSH โดยปกติค่าเริ่มต้นคือ 22 แต่อาจมีการเปลี่ยนแปลง

ตรวจสอบพอร์ต ssh

ตรวจสอบบันทึกของเซิร์ฟเวอร์ เช่น /var/log/auth.log หรือ /var/log/secure เพื่อดูรายละเอียดข้อผิดพลาด

เคล็ดลับพิเศษหากยังไม่ได้ผล

หากคุณลองทำตามขั้นตอนเหล่านี้แล้ว แต่ยังเห็นข้อผิดพลาด ให้ลองทำดังนี้

  1. โหมดพูดคุย: เปิดโหมดรายละเอียดใน SSH นี่เหมือนกับการขอให้คอมพิวเตอร์แจ้งเบาะแสเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้น คุณทำได้โดยการเพิ่ม -vvv ลงในคำสั่ง SSH ของคุณ เช่น ssh -vvv [email protected] มันจะให้รายละเอียดเพิ่มเติมมากมายเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณพยายามเชื่อมต่อ
  2. ปัญหาของตัวแทน: บางครั้งปัญหาอาจเกิดจากตัวแทน SSH ซึ่งเป็นเครื่องมือที่เก็บคีย์ของคุณ หากตัวแทนทำงานไม่ถูกต้อง กุญแจของคุณจะไม่แสดงอย่างถูกต้อง การรีสตาร์ทเอเจนต์ SSH ในบางครั้งอาจช่วยได้

ทำให้มันทำงานได้อย่างราบรื่น

เพื่อหลีกเลี่ยงไม่ให้เกิดปัญหานี้อีก ต่อไปนี้เป็นเคล็ดลับบางประการเพื่อให้ทุกอย่างทำงานได้ดี:

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

คำถามที่พบบ่อย

ฉันจะตั้งค่าการรับรองความถูกต้องของคีย์สาธารณะใน SSH ได้อย่างไร

หากต้องการตั้งค่าการตรวจสอบสิทธิ์คีย์สาธารณะใน SSH ขั้นแรกให้สร้างคู่คีย์ SSH บนเครื่องของคุณโดยใช้คำสั่งเช่น ssh-keygen สิ่งนี้จะสร้างคีย์ส่วนตัว ( id_rsa ) และคีย์สาธารณะ ( id_rsa.pub ) จากนั้น คัดลอกคีย์สาธารณะไปยังไฟล์ ~/.ssh/authorized_keys ของเซิร์ฟเวอร์โดยใช้ ssh-copy-id user@server_ip ตรวจสอบให้แน่ใจว่าไฟล์ authorized_keys มีสิทธิ์ที่ถูกต้อง (ปกติคือ 600) เพื่อความปลอดภัย การตั้งค่านี้ทำให้ SSH สามารถใช้การตรวจสอบสิทธิ์โดยใช้คีย์แทนรหัสผ่าน

สาเหตุทั่วไปของข้อผิดพลาด 'SSH Permission Denied (Publickey)' คืออะไร

  • สาเหตุทั่วไปของข้อผิดพลาดนี้ได้แก่:
  • สิทธิ์ไม่ถูกต้องในไฟล์คีย์ SSH คีย์ส่วนตัวควรอ่านได้โดยผู้ใช้เท่านั้น (600)
  • การกำหนดค่าไม่ถูกต้องในไฟล์กำหนดค่า SSH ( sshd_config หรือ ssh_config )
  • ซอฟต์แวร์ไคลเอนต์หรือเซิร์ฟเวอร์ SSH ที่ล้าสมัยที่อาจไม่รองรับโปรโตคอลการตรวจสอบสิทธิ์ในปัจจุบัน
  • ไฟร์วอลล์หรือซอฟต์แวร์ความปลอดภัยบล็อกพอร์ต SSH หรือการเชื่อมต่อ
  • ตั้งค่าคีย์สาธารณะไม่ถูกต้องในไฟล์ authorized_keys หรือใช้ชื่อผู้ใช้ที่ไม่ถูกต้องสำหรับการเชื่อมต่อ SSH

ฉันจะตรวจสอบได้อย่างไรว่าคีย์ SSH ของฉันถูกเพิ่มไปยังเซิร์ฟเวอร์อย่างถูกต้องหรือไม่

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

เหตุใดการจำกัดสิทธิ์ในไฟล์คีย์ SSH จึงเป็นเรื่องสำคัญ

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

การเปลี่ยนแปลงการกำหนดค่า SSH ของเซิร์ฟเวอร์อาจทำให้เกิดข้อผิดพลาด 'Permission Denied' ได้หรือไม่

ใช่ การเปลี่ยนแปลงในไฟล์การกำหนดค่า SSH ของเซิร์ฟเวอร์ ( etc/ssh/sshd_config ) อาจทำให้เกิดข้อผิดพลาดดังกล่าวได้ ตัวอย่างเช่น หากตั้งค่า PubkeyAuthentication เป็น no เซิร์ฟเวอร์จะไม่ยอมรับการตรวจสอบสิทธิ์คีย์สาธารณะ ซึ่งนำไปสู่ข้อผิดพลาดในการปฏิเสธสิทธิ์

ฉันควรทำอย่างไรหากไคลเอ็นต์ SSH ของฉันล้าสมัย

หากไคลเอนต์ SSH ของคุณล้าสมัย อาจไม่รองรับวิธีการตรวจสอบสิทธิ์ที่ใหม่กว่าหรืออาจมีช่องโหว่ด้านความปลอดภัยที่ยังไม่ได้แพตช์ สิ่งสำคัญคือต้องอัปเดตไคลเอ็นต์ SSH ให้เป็นเวอร์ชันล่าสุดสำหรับระบบปฏิบัติการของคุณ

ไฟร์วอลล์ส่งผลต่อการเชื่อมต่อ SSH อย่างไร

ไฟร์วอลล์สามารถบล็อกการเชื่อมต่อ SSH ได้ หากได้รับการกำหนดค่าให้จำกัดการเข้าถึงพอร์ต SSH (ค่าเริ่มต้นคือ 22) ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของคุณอนุญาตการรับส่งข้อมูลบนพอร์ตที่ใช้สำหรับ SSH เพื่อป้องกันปัญหาการเชื่อมต่อ

แหล่งข้อมูลอื่นๆ

วิธีการติดตั้ง Sendmail ใน Linux 2024 (ทีละขั้นตอน)

คำสั่ง Linux พื้นฐานสำหรับ DevOps (คู่มือ)

ห่อ

ในบทความนี้ เราได้สำรวจสาเหตุที่ทำให้เกิด “ข้อผิดพลาด: การอนุญาตถูกปฏิเสธ (สาธารณะ)” และวิธีแก้ไข โปรดจำไว้ว่า ข้อผิดพลาดนี้เหมือนกับกุญแจที่ไม่เหมาะกับการล็อค ซึ่งมักจะหมายความว่ามีบางอย่างขึ้นอยู่กับวิธีการตั้งค่าหรือใช้คีย์ SSH ของคุณ เมื่อทำตามขั้นตอนที่เราอธิบายไว้ คุณจะสามารถแก้ไขปัญหาและกลับไปสนทนาอย่างปลอดภัยกับคอมพิวเตอร์เครื่องอื่นได้