SSH คืออะไร
เรามาทำความเข้าใจกันก่อนนะครับว่ามันคืออะไรและจะนำไปใช้งานยังไง SSH (Secure Shell) เป็นโปรโตคอล(Protocol) ชนิดหนึ่งที่ใช้สำหรับให้ทางเครื่องคอมพิวเตอร์เครื่องหนึ่งขอเรียกว่าเครื่องลูกข่าย (Client) สามารถติดต่อไปยังเครื่องคอมพิวเตอร์ที่หน้าที่เป็นแม่ข่าย (Server) ได้ โดยโปรแกรมนี้เป็นโปรแกรมที่มาแทน โปรโตคอลเก่าๆ เช่น Telnet ซึ่งเป็นโปรแกรมที่ใช้มาตั้งแต่เครื่อง At&T Unix โดยใช้ Network Port 23 สำหรับเครื่องแม่ข่าย จุดด้อยของ Telnet ก็คือ ไม่มีความสามารถในการเข้ารหัสข้อมูลก่อนส่งจากเครื่องลูกข่ายไปที่เครื่องแม่ข่าย ทำให้สามารถแฮคข้อมูลการเข้าถึง username และ password ของผู้ใช้ได้ง่าย และนั้นคือได้เริ่มนำ SSH มาใช้เพราะมีคุณสมบัติตามที่กล่าวมาข้างต้น คือมีความสามารถในการเข้ารหัส และใช้ Network port 22 ซึ่งทำให้การเข้าถึงเครื่องแม่ข่ายจากระยะไกลมีความปลอดภัย เพราะข้อมูลจะถูกเข้ารหัสก่อนส่งไปที่เครื่องแม่ข่าย แต่จะขอกล่าวรายละเอียดมากไปกว่านี้นะครับ จะได้มีโอกาสอธิบายในบทความหน้า
SSH Keys คืออะไร
SSH Keys เป็นมาตรฐานการรักษาความปลอดภัยที่ถูกออกแบบมาสำหรับ SSH โปรโตคอลเพื่อใช้สำหรับการเข้าถึงเครื่องแม่ข่ายโดยที่ไม่ต้องการรหัสผ่าน (Pssword) หลักการทำงานเหมือนกับแม่กุญแจกับลูกกุญแจนะครับอธิบายง่ายๆ นะครับ กุญแจตัวนึงจะใช้ทั้งเวลาที่เข้ารหัสและถอดรหัสเราเรียกการเข้ารหัสแบบ นี้ว่า secret key cryptography หรือ Symmetric Key Cryptography เพราะว่าตัวกุญแจใช้งานทั้งเข้าและถอดรหัส และต้องเก็บเป็นความลับ รู้กันเฉพาะคนเข้ารหัสข้อมูลและผู้รับข้อมูล คือลูกกุญแจจะสามารถใช้กับแม่กุญแจที่ถูกต้องเท่านั้น ซึ่งเมื่อทำการสร้างแม่กุญแจแล้วก็สามารถสร้างลูกกุญแจได้
จะมีกุญแจสองดอก คือ Private key ซึ่งจะเก็บเป็น ความลับมีเจ้าของคนเดียว เท่านั้นที่รู้ และอีกอันคือ Public key ซึ่งไม่จำเป็นต้องเก็บเป็นความลับ ทั้งสองตัวจะใช้งานต่างกันคือ ถ้าใช้กุญแจอันนึงเข้ารหัส จะต้องใช้กุญแจอีกตัวนึงที่เข้าคู่กันในการถอดรหัส เอาให้เห็นภาพอีกหน่อย สมมติว่ามี Public key A กับ Private key B เป็นกุญแจที่เข้าคู่กัน ถ้าเอา A เข้ารหัส จะมีแต่ B เท่านั้นที่ถอดรหัสนั้นออก และในทางกลับกันถ้าใช้ B เป็นตัวเข้ารหัสก็จะมีแต่ A เท่านั้นที่จะถอดรหัสได้ การที่มีกุญแจสองแบบทำให้ Public key cryptography ได้เปรียบ secret key cryptography ตรงที่ผู้รับกับผู้ส่งใช้กุญแจคนละตัวกัน ไม่จำเป็นต้องรู้ความลับของกันและกันก็สามารถส่งข้อมูลหากันได้อย่างปลอดภัย
ดังนั้นจะเรียกลูกกุญแจว่า Public keys แม่กุญแจจะลงท้ายด้วย *.pub ซึ่งเราสามารถเห็นได้ในหัวข้อถัดไป และลแม่กุญแจจะเรียกว่า Private Key จะได้ง่ายต่อการเข้าไป ซึ่งเราต้องรู้ว่าคืออะไรเพราะจะต้องนำไปใช้ทั้งคู่ เมื่อเราทำการสร้าง Keys ขึ้นมา จะสร้างไฟล์มา 2 สร้างคือ Public Key “*.pub” และ privatekey “*rsa”
การสร้าง SSH Keys
การสร้างให้ทำการ login เข้าสู่ระบบในที่นี้ขอยกตัวอย่าง Unix เครื่องลูกข่ายต้องการติดต่อเครื่องแม่ข่ายด้วย SSH ด้วย SSH Keys นะครับ ข้อมูลของ Key จะอยู่ใน $HOME/.ssh นะครับ ถ้าเป็น user อื่นก็เข้าที่ .ssh นะครับ
#ssh-keygen -t rsa
เมื่อทำการ Run คำสั่งแล้วจะให้กำหนดรหัสผ่าน เพื่อความปลอดภุัยเพิ่มเติม เรียกว่า Key Phase จะใช้สำหรับเข้าแบบ 2 เงี่ยนไข หรือไม่ต้องการก็กดผ่านไป เมื่อผ่านแล้วจะได้ไฟล์ 2 ไฟล์ คือ Private key:id_rsa และ Public key: id_rsa.pub ก็เป็นอันจบขั้นตอนการสร้าง Key นะครับ และหลังจากสร้างแล้วห้ามสร้างซ้านะครับ ถ้าสร้างซ้ำ ก็จะทำการสร้างการเข้ารหัสใหม่ Public key จะใช้ไม่ได้นะครับ ต้องระวังกันไว้ สำหรับที่เคยมี Key อยู่แล้ว


การนำ Key ไปใช้งาน
ให้ไปที่เครื่องแม่ข่ายที่จะเข้าใช้งาน แนะนำให้ทำการสร้าง user ให้เหมือนกันกับเครื่องลูกข่ายที่จะเข้านะครับเพื่อป้องกันการสับสน ระหว่าง user ซึ่งมีขั้นตอนดังนี้
เครืองแม่ข่ายทำดังนี้
- สร้าง user ให้เหมือนกับต้นทาง แนะนำ ซึ่งจริงๆ อาจใช้ user อื่นได้
- copy file id_rsa.pub จากเครื่องลูกข่าย
- สร้าง file $HOME/.ssh/authorize_keys #ถ้ามีอยู่แล้วไม่ต้องสร้าง ให้สิทธิเป็น 644
- cat id_rsa.pub >> ~/.ssh/authorized_keys
เครื่องลูกข่ายลองใช้งานโดย ใช้คำสั้ง
#ssh username@server
ถ้าใช้งานได้จะไม่ต้องใช้ Password ในการเข้าใช้งานเครื่องแม่ข่ายนะครับ ขอให้โชคดี