SSH to Server (Droplet)

16:05 Lesson 18 of 27 Preview

เรียนรู้วิธีเชื่อมต่อและจัดการ Server (Droplet) อย่างปลอดภัยด้วย SSH, ทำความเข้าใจหลักการทำงานของ Public & Private Key, และตั้งค่า Server เบื้องต้นให้พร้อมสำหรับ Deployment จริงในขั้นตอนต่อไป

สารบัญเนื้อหา

    การเชื่อมต่อ Server (Droplet) ด้วย SSH (Secure Shell)

    ในบทเรียนนี้ เราจะเรียนรู้วิธีการเข้าถึง Server ผ่านโปรโตคอล SSH (Secure Shell) ซึ่งเป็นมาตรฐานความปลอดภัยระดับสูงที่ใช้ในการบริหารจัดการ Server ทั่วโลก แทนการใช้รหัสผ่าน (Password) แบบดั้งเดิมที่เสี่ยงต่อการถูกโจมตี

    Public & Private Key Diagram

    1. หลักการทำงานของ Public และ Private Key

    ระบบ SSH Authentication ทำงานด้วยหลักการเข้ารหัสแบบกุญแจคู่ (Asymmetric Cryptography) ซึ่งประกอบด้วย 2 ส่วนที่ต้องทำงานสอดคล้องกัน ดังภาพประกอบด้านล่างนี้:

    องค์ประกอบสำคัญ:

    1. Public Key (แม่กุญแจ):
      * หน้าที่: ติดตั้งไว้ที่ฝั่ง Server (ในไฟล์ authorized_keys) เพื่อใช้ตรวจสอบสิทธิ์
      * ความปลอดภัย: สามารถเปิดเผยได้ ไม่เป็นความลับ
      * ลักษณะตัวอย่าง:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDc7... (รหัสยาวต่อเนื่อง) ... user@hostname
    
    1. Private Key (ลูกกุญแจ):
      * หน้าที่: เก็บไว้ที่เครื่องคอมพิวเตอร์ของผู้ใช้งาน (Local Machine) เพื่อใช้ยืนยันตัวตนในการเข้าสู่ Server
      * ความปลอดภัย: เป็นความลับสูงสุด ห้ามเผยแพร่หรือส่งต่อให้ผู้อื่นเด็ดขาด
      * ลักษณะตัวอย่าง:
    -----BEGIN OPENSSH PRIVATE KEY-----
    b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
    NhAAAAAwEAAQAAAgEAsMw/e......(รหัสความยาวหลายบรรทัด)......
    .......................................................
    -----END OPENSSH PRIVATE KEY-----
    

    2. ขั้นตอนการสร้าง SSH Key Pair

    ดำเนินการสร้างคู่กุญแจผ่าน Terminal (macOS/Linux) หรือ PowerShell (Windows) ด้วยคำสั่งดังนี้:

    ssh-keygen -t rsa -b 4096
    
    • -t rsa: เลือกใช้อัลกอริทึม RSA
    • -b 4096: กำหนดความยาวกุญแจ 4096 บิต เพื่อความปลอดภัยสูงสุด

    การตั้งค่าระหว่างสร้าง:

    1. ระบบจะถามตำแหน่งบันทึกไฟล์: กด Enter เพื่อใช้ค่าเริ่มต้น (~/.ssh/id_rsa)
    2. ระบบจะถาม Passphrase: กด Enter เพื่อข้าม (หากไม่ต้องการตั้งรหัสผ่านชั้นที่ 2)

    เมื่อเสร็จสิ้น ท่านสามารถตรวจสอบไฟล์ที่ได้ด้วยคำสั่ง:

    • ดู Public Key (เพื่อนำไปใช้): cat ~/.ssh/id_rsa.pub
    • ดู Private Key (เพื่อตรวจสอบ): cat ~/.ssh/id_rsa

    3. การติดตั้ง Public Key บน DigitalOcean Droplet

    กรณีสร้าง Droplet ใหม่

    ในขั้นตอนการสร้าง Droplet ให้เลื่อนไปยังส่วน Authentication Method เลือกหัวข้อ SSH Key และคลิกปุ่ม Add New Key จากนั้นนำ Public Key ที่ได้มาวางลงในช่องว่าง

    การสร้าง Public Key ใน DigitalOcean Droplet

    กรณี Droplet ที่สร้างไว้แล้ว (เพิ่ม Key ทีหลัง)

    หากต้องการเพิ่มสิทธิ์ให้เครื่องคอมพิวเตอร์อื่น สามารถทำได้ผ่าน Console ของ DigitalOcean:

    1. เข้าสู่เมนู Access > Launch Droplet Console
    2. ใช้คำสั่งแก้ไขไฟล์ authorized_keys:
    nano ~/.ssh/authorized_keys
    
    1. วาง Public Key ใหม่ต่อท้ายบรรทัดเดิม หรือแทนที่ของเดิม
    2. บันทึกไฟล์ (Ctrl + O, Enter) และออกจากโปรแกรม (Ctrl + X)

    4. การเชื่อมต่อเข้าสู่ Server

    เมื่อติดตั้ง Key เรียบร้อยแล้ว ให้กลับมาที่ Terminal ในเครื่องคอมพิวเตอร์ของท่าน และใช้คำสั่งเชื่อมต่อดังนี้:

    ssh root@<IP_ADDRESS>
    

    (ตัวอย่าง: ssh [email protected])

    หมายเหตุ: ในการเชื่อมต่อครั้งแรก ระบบจะแจ้งเตือนเรื่อง Fingerprint ให้พิมพ์ yes เพื่อยืนยัน


    5. การเตรียม Environment เบื้องต้น

    หลังจากเข้าสู่ Server ในฐานะ Root แล้ว ควรเตรียมโครงสร้างโฟลเดอร์สำหรับโปรเจกต์ดังนี้:

    1. ตรวจสอบไฟล์ในระบบ (รวมไฟล์ซ่อน):

    ls -la
    

    2. สร้าง Directory สำหรับโปรเจกต์:

    mkdir -p /var/www/petshop
    cd /var/www/petshop
    

    3. ดึง Source Code จาก GitHub:

    git clone https://github.com/son-content-mastery/petshop.git .
    

    (การใส่จุด . ด้านหลัง คือคำสั่งให้วางไฟล์ทั้งหมดในโฟลเดอร์ปัจจุบัน)

    เมื่อดำเนินการครบทุกขั้นตอน Server ของท่านก็พร้อมสำหรับการติดตั้ง Container และ Deploy Application ในลำดับถัดไปครับ