Contents

คุณจะแก้ไขข้อผิดพลาด SSH"สิทธิ์ถูกปฏิเสธ (คีย์สาธารณะ)"บน Linux ได้อย่างไร

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

กุญแจสาธารณะคืออะไร?

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

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

เพื่อให้ OpenSSH ซึ่งเป็นโซลูชันไคลเอนต์และเซิร์ฟเวอร์โอเพ่นซอร์สที่แพร่หลายทำงานได้อย่างถูกต้อง จะต้องให้สิทธิ์เฉพาะแก่ไฟล์เฉพาะที่อยู่ในโฮมไดเร็กตอรี่ของผู้ใช้ (.ssh/authorized\_keys) โดยเฉพาะอย่างยิ่ง ไฟล์ไม่ควรกำหนดค่าสิทธิ์การเขียนให้กับผู้ใช้ภายนอกเจ้าของ ซึ่งเรียกว่า “เขียนได้ทั่วโลก” ไม่เช่นนั้นระบบจะทำงานไม่ถูกต้อง เนื่องจากมีจุดนำหน้าชื่อไดเร็กทอรี ไฟล์นี้จะไม่ปรากฏในรายการไฟล์มาตรฐานโดยใช้คำสั่งปกติ เช่น"ls"ซึ่งจำเป็นต้องใช้คำสั่งที่ครอบคลุมมากขึ้น"ls-A"ตามด้วย"

การแก้ไขสิทธิ์อาจเกิดขึ้นเมื่อไฟล์ถูกถ่ายโอนจากอุปกรณ์หนึ่งไปยังอีกเครื่องหนึ่งหรือสร้างขึ้นบนระบบปัจจุบันของคุณ อย่างไรก็ตาม การปรับการตั้งค่าเหล่านี้ทำได้ง่ายและสามารถทำได้ทันที

ตรวจสอบสิทธิ์คีย์สาธารณะของคุณ

ไฟล์ที่ได้รับอนุญาต\_keysเป็นไฟล์ข้อความที่ประกอบด้วยกุญแจสาธารณะของลูกค้าที่ต้องการอนุญาตให้เข้าถึงบัญชีของตนบนระบบระยะไกล หากต้องการดูสิทธิพิเศษ การใช้คำสั่ง’ls’ร่วมกับตัวเลือก’-l’ก็เพียงพอแล้ว

 ls -l ~/.ssh/authorized_keys

/th/images/ssh-id_rsa-pub-ls-output.jpg

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

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

มีสองวิธี: เชิงตัวเลขและเชิงสัญลักษณ์

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

 chmod 700 ~/.ssh/authorized_keys

วิธีการเชิงสัญลักษณ์ช่วยจำได้มากกว่า:

 chmod go-w ~/.ssh/authorized_keys 

คัดลอกคีย์อย่างปลอดภัยโดยใช้ ssh-agent

/th/images/ssh-agent.jpg

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

หากต้องการเริ่ม ssh-agent ให้ใช้คำสั่งนี้:

 eval "$(ssh-agent-s)"

หากต้องการเข้าถึงเซิร์ฟเวอร์ระยะไกลโดยใช้เอเจนต์ SSH ผ่านทางอินเทอร์เฟซบรรทัดคำสั่ง ให้ใช้ตัวเลือก “-A” ควบคู่ไปกับคำสั่ง “ssh”

 ssh -A [email protected] 

ตรวจสอบการตั้งค่า sshd ของเซิร์ฟเวอร์ระยะไกล

/th/images/sshd-config-file.jpg

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

ไฟล์ที่มีการตั้งค่าส่วนกลางสำหรับ SSH daemon (sshd) อยู่ที่ “/etc/ssh/sshd\_config” เป็นของผู้ใช้รูทและต้องการสิทธิ์ผู้ดูแลระบบจึงจะเข้าถึงหรือแก้ไขได้ หากต้องการแก้ไขโดยใช้โปรแกรมแก้ไขข้อความ Vim คุณสามารถดำเนินการคำสั่ง “sudo vim/etc/ssh/sshd\_config” ตามด้วยการกด Enter

 sudo vim /etc/ssh/sshd_config 

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

บันทึกและรีสตาร์ทเซิร์ฟเวอร์ SSH:

 sudo systemctl restart sshd.service

ตอนนี้คุณสามารถแก้ไขข้อผิดพลาดสิทธิ์คีย์สาธารณะ SSH ได้แล้ว

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