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 อยู่แล้ว

ภาพ Private key
ภาพ Public key

การนำ Key ไปใช้งาน

ให้ไปที่เครื่องแม่ข่ายที่จะเข้าใช้งาน แนะนำให้ทำการสร้าง user ให้เหมือนกันกับเครื่องลูกข่ายที่จะเข้านะครับเพื่อป้องกันการสับสน ระหว่าง user  ซึ่งมีขั้นตอนดังนี้

เครืองแม่ข่ายทำดังนี้

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

เครื่องลูกข่ายลองใช้งานโดย ใช้คำสั้ง

#ssh  username@server

ถ้าใช้งานได้จะไม่ต้องใช้ Password ในการเข้าใช้งานเครื่องแม่ข่ายนะครับ ขอให้โชคดี

Facebook Comments