วิธีแก้ไข Error Permission Denied (Publickey)
เผยแพร่แล้ว: 2024-01-10- ทำไมมันถึงสำคัญ
- พื้นฐานของการเชื่อมต่อคอมพิวเตอร์ที่ปลอดภัย
- กุญแจสู่ล็อค: กุญแจสาธารณะ
- เหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น?
- วิธีการแก้ไข
- เคล็ดลับพิเศษหากยังไม่ได้ผล
- ทำให้มันทำงานได้อย่างราบรื่น
- คำถามที่พบบ่อย
- แหล่งข้อมูลอื่นๆ
- ห่อ
คุณเคยเจอข้อความ “ข้อผิดพลาด: Permission Denied (Publickey)” ในขณะที่ใช้คอมพิวเตอร์ของคุณหรือไม่? นี่เป็นข้อผิดพลาดทั่วไปที่มักจะปรากฏขึ้นระหว่างการเชื่อมต่อ SSH ซึ่งเป็นวิธีที่คอมพิวเตอร์สื่อสารกันอย่างปลอดภัย
ให้คิดว่าเป็นการพยายามใช้กุญแจที่ไม่พอดีกับตัวล็อค เมื่อคุณเห็นข้อผิดพลาดนี้ แสดงว่าคอมพิวเตอร์ของคุณมีปัญหาในการสร้างลิงก์ที่ปลอดภัยกับคอมพิวเตอร์เครื่องอื่น เนื่องจากมีบางอย่างในการตั้งค่าความปลอดภัยไม่ตรงกัน
ทำไมมันถึงสำคัญ
การเชื่อมต่อที่ปลอดภัย เช่นเดียวกับการเชื่อมต่อด้วย SSH ก็เหมือนกับการสนทนาส่วนตัวในห้องที่มีเสียงดัง คุณไม่ต้องการให้ทุกคนได้ยิน โดยเฉพาะอย่างยิ่งหากคุณแบ่งปันความลับหรือข้อมูลส่วนบุคคลใช่ไหม นั่นเป็นสาเหตุที่การแก้ไขข้อผิดพลาดนี้มีความสำคัญมาก
ช่วยให้การสนทนาในคอมพิวเตอร์ของคุณเป็นส่วนตัวและปลอดภัย ทำให้มั่นใจได้ว่าข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านจะยังคงเป็นความลับ
พื้นฐานของการเชื่อมต่อคอมพิวเตอร์ที่ปลอดภัย
เรามาเจาะลึกว่า SSH คืออะไร
SSH ย่อมาจาก Secure Shell และเป็นวิธีพิเศษสำหรับคอมพิวเตอร์ในการพูดคุยกันทางอินเทอร์เน็ตด้วยวิธีที่ปลอดภัยเป็นพิเศษ ลองนึกภาพ SSH เหมือนอุโมงค์ส่วนตัวพิเศษที่เชื่อมต่อคอมพิวเตอร์สองเครื่อง
มีเพียงคอมพิวเตอร์สองเครื่องเท่านั้นที่สามารถส่งข้อความถึงกันผ่านอุโมงค์นี้ ทำให้การสนทนาของพวกเขาปลอดภัยจากผู้ดักฟัง
กุญแจสู่ล็อค: กุญแจสาธารณะ
เพื่อให้ทันเนลนี้ปลอดภัย SSH จะใช้สิ่งที่เรียกว่า 'การรับรองความถูกต้องของคีย์สาธารณะ' เหมือนมีรหัสผ่านพิเศษแต่อยู่ในรูปแบบของกุญแจ คอมพิวเตอร์ของคุณมีคีย์เฉพาะ (เรียกว่าคีย์สาธารณะ) ที่ใช้ร่วมกับคอมพิวเตอร์เครื่องอื่น
คิดว่ามันเหมือนกับการจับมือกันแบบลับๆ หากการจับมือไม่ตรงกัน การเชื่อมต่อจะไม่เกิดขึ้น และนั่นคือเมื่อคุณเห็นข้อความ “ข้อผิดพลาด: การอนุญาตถูกปฏิเสธ (สาธารณะ)”
เหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น?
เหตุใดคุณจึงเห็นข้อผิดพลาดนี้ มีเหตุผลทั่วไปสองสามประการ:
- ปัญหาสำคัญ: บางครั้งข้อผิดพลาดเกิดขึ้นเนื่องจากมีบางอย่างผิดปกติกับการตั้งค่าคีย์พิเศษของคุณ บางทีกุญแจบนคอมพิวเตอร์ของคุณอาจไม่ตรงกับกุญแจบนคอมพิวเตอร์ที่คุณพยายามจะคุยด้วย เหมือนกับการพยายามใส่หมุดสี่เหลี่ยมเข้าไปในรูกลม แต่มันก็ไม่ได้ผล
- การตั้งค่าไม่ถูกต้อง: ในบางครั้ง การตั้งค่าหรือการอนุญาตบนคอมพิวเตอร์ของคุณอาจตั้งค่าไม่ถูกต้อง วิธีนี้สามารถหยุดคอมพิวเตอร์ของคุณจากการใช้กุญแจอย่างถูกต้อง เช่น การมีกุญแจที่ถูกต้องแต่ไม่สามารถเปิดล็อคได้
วิธีการแก้ไข
เมื่อคุณเข้าใจแล้วว่าเหตุใดข้อผิดพลาดนี้จึงเกิดขึ้น เรามาพูดถึงวิธีแก้ไขกันดีกว่า นี่คือขั้นตอนบางส่วนที่คุณสามารถปฏิบัติตามได้:
ตรวจสอบสิทธิ์คีย์ 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 แต่อาจมีการเปลี่ยนแปลง
ตรวจสอบบันทึกของเซิร์ฟเวอร์ เช่น /var/log/auth.log หรือ /var/log/secure เพื่อดูรายละเอียดข้อผิดพลาด
เคล็ดลับพิเศษหากยังไม่ได้ผล
หากคุณลองทำตามขั้นตอนเหล่านี้แล้ว แต่ยังเห็นข้อผิดพลาด ให้ลองทำดังนี้
- โหมดพูดคุย: เปิดโหมดรายละเอียดใน SSH นี่เหมือนกับการขอให้คอมพิวเตอร์แจ้งเบาะแสเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้น คุณทำได้โดยการเพิ่ม
-vvv
ลงในคำสั่ง SSH ของคุณ เช่นssh -vvv [email protected]
มันจะให้รายละเอียดเพิ่มเติมมากมายเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณพยายามเชื่อมต่อ - ปัญหาของตัวแทน: บางครั้งปัญหาอาจเกิดจากตัวแทน SSH ซึ่งเป็นเครื่องมือที่เก็บคีย์ของคุณ หากตัวแทนทำงานไม่ถูกต้อง กุญแจของคุณจะไม่แสดงอย่างถูกต้อง การรีสตาร์ทเอเจนต์ SSH ในบางครั้งอาจช่วยได้
ทำให้มันทำงานได้อย่างราบรื่น
เพื่อหลีกเลี่ยงไม่ให้เกิดปัญหานี้อีก ต่อไปนี้เป็นเคล็ดลับบางประการเพื่อให้ทุกอย่างทำงานได้ดี:
- การดูแลคีย์: ปฏิบัติต่อคีย์ SSH ของคุณเหมือนกับที่คุณทำกับกุญแจบ้าน เก็บไว้อย่างปลอดภัยและอย่าแบ่งปันกับผู้อื่น ตรวจสอบเป็นประจำว่าพวกเขายังคงทำงานตามปกติหรือไม่
- การตรวจสุขภาพเป็นประจำ: เช่นเดียวกับที่คุณตรวจสอบรถยนต์หรือบ้านของคุณเป็นประจำสำหรับปัญหาใดๆ ให้ทำเช่นเดียวกันกับการตั้งค่า 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 ของคุณ เมื่อทำตามขั้นตอนที่เราอธิบายไว้ คุณจะสามารถแก้ไขปัญหาและกลับไปสนทนาอย่างปลอดภัยกับคอมพิวเตอร์เครื่องอื่นได้
Ludjon ผู้ร่วมก่อตั้ง Codeless มีความหลงใหลในเทคโนโลยีและเว็บอย่างลึกซึ้ง ด้วยประสบการณ์กว่าทศวรรษในการสร้างเว็บไซต์และพัฒนาธีม WordPress ที่ใช้กันอย่างแพร่หลาย Ludjon ได้สร้างชื่อเสียงให้กับตัวเองในฐานะผู้เชี่ยวชาญที่ประสบความสำเร็จในสาขานี้