SSH keys (shell secure) ใช้ใน SSH protocol เพื่อ authenticate session และสร้างการเชื่อมต่อระหว่าง local machine และ SSH server ในขั้นตอนปกติ วิธีที่ดีที่สุดคือใช้ public key เมื่อเชื่อมต่อสำเร็จ SSH จะไม่ต้องการ password ทุกครั้ง และเชื่อมต่ออัตโนมัติกับเซิร์ฟเวอร์นั้น
SSH Permission Denied. Please Try Again Error
อย่างไรก็ตาม บางครั้งการใช้ public key ทำให้ connection request ของ SSH Client ถูกปฏิเสธโดย Server ก่อให้เกิด SSH permission denied error
บทความนี้จะสาธิตวิธีแก้ “SSH Permission denied” error หลายวิธี แต่ก่อนมาดูสาเหตุ
มีหลายสาเหตุที่ทำให้ error นี้เกิด สาเหตุทั่วไปที่สุดคือ password authentication ถูกปิดบน SSH Server
อีกสาเหตุหนึ่งคือ ไม่มีสิทธิ์เข้าถึงโฟลเดอร์ “ssh” ซึ่งหมายถึงการเข้าถึง Authorized_keys ถูกปิด
วิธีที่ 1: อนุญาต password authentication บน SSH server
ถ้า server ไม่ enable SSH connection ด้วย password authentication การเชื่อมต่อจะล้มเหลว
- ไปที่ SSH Server เปิด configuration file:
sudo nano /etc/ssh/sshd_config
SSH configuration file - ใน config file หาบรรทัด “PasswordAuthentication” uncomment โดยลบ “#” นำหน้า: Locate PasswordAuthentication Activate PasswordAuthentication
- Save และ exit (CTRL+O, CTRL+X) restart SSH service:
sudo systemctl restart sshd
Restarting SSH service - ลองเชื่อมต่อ SSH server อีกครั้งจาก client: SSH server connected
แก้ error สำเร็จ เชื่อมต่อ SSH server ได้แล้ว
วิธีที่ 2: เปิดใช้งาน public key authentication
บางครั้ง error แสดงเป็น “SSH Permission Denied (public key)” เกิดจากไม่ได้ enable public key authentication บน SSH server
- ไปที่ SSH Server PC เปิด config file:
sudo nano /etc/ssh/sshd_config
ใน config file ปิด root login และเปิด “PublicKeyAuthentication”: Configure RootLogin and PubkeyAuthentication - ตรวจสอบว่า UsePAM options เปิดอยู่ใน config file: Enable UsePAM configuration
- Save exit (CTRL+O, CTRL+X) restart SSH service:
sudo systemctl restart sshd
- ลองเชื่อมต่ออีกครั้ง: Successful SSH server connection
แก้ SSH Permission Denied (Public Key) error สำเร็จ
วิธีที่ 3: ให้สิทธิ์ SSH directory
Public key มักเก็บใน authorized_keys subdirectory ภายใน “ssh” directory ถ้าสิทธิ์ของ sub-directory หรือ directory หลักไม่ถูกต้อง SSH connection จะ error
- เปลี่ยนสิทธิ์ “authorized_keys” directory:
sudo chmod 600 ~/.ssh/authorized_keys
จะให้ read/write permission สำหรับ authorized_keys - ให้ execute permission บน parent directory:
sudo chmod 700 ~/.ssh
รันคำสั่งเหล่านี้แล้ว ลอง SSH connection: Connected to SSH server
Output แสดงว่า error แก้ไขได้แล้ว
Bonus fix สำหรับ SSH permission denied
Error “Permission Denied” อาจเกิดจาก password ของ SSH Server ไม่ถูกต้อง (typo หรือ server เปลี่ยน password ไปโดย client ไม่รู้) ตอนใส่ password จะได้ error:
Retry password “wrong password entered”
กรณีนี้ ติดต่อ SSH Server support ถามว่าเปลี่ยน password ไปไหม หรือเช็ค typo เอง แล้วลองใหม่:
The SSH server is running
SSH Permission Denied ไม่ใช่ error ใหม่ สาเหตุหลักคือ ไม่ enable password authentication, ไม่ enable public key authentication, และสิทธิ์ผิดบน “ssh” หรือ “authorized_keys” directory คู่มือนี้อธิบายวิธีแก้ครบถ้วน นอกจากนี้ error อาจเกิดจาก server เปลี่ยน password หรือ typo ในกรณีนี้ ติดต่อ support หรือพิมพ์ password ใหม่ให้ระมัดระวัง
ABOUT THE AUTHOR

Muhammad Zubyan
Muhammad Zubyan ได้รับการรับรอง Google IT Support Professional มีประสบการณ์มากกว่า 7 ปี ทำงานกับคอมพิวเตอร์มากกว่า 1500 เครื่อง มีความเข้าใจลึกซึ้งในการตรวจจับและ troubleshoot root cause ของปัญหาและ error ที่เกี่ยวกับ Windows นอกจากการดูแล Appuals เป็น Senior Editor ยังกำลังพัฒนา Game Optimization program ของตัวเอง ที่รองรับทั้งเกมเมอร์และผู้ใช้ทั่วไป