การใช้ SSH: Command Line Access
ในบทความที่แล้ว เราได้เรียนรู้วิธีการ Deploy โปรเจกต์ PHP ของเราไปยัง Shared Hosting โดยใช้ FTP Client ซึ่งเป็นวิธีที่ง่ายและสะดวก แต่ก็มีข้อจำกัดบางอย่าง เช่น ความเร็วในการถ่ายโอนข้อมูลที่อาจช้า และความปลอดภัยที่ไม่สูงเท่าที่ควร ในบทนี้ เราจะมาเรียนรู้วิธีการใช้ SSH (Secure Shell) ซึ่งเป็นอีกทางเลือกหนึ่งที่ปลอดภัยและยืดหยุ่นกว่าในการเข้าถึงและจัดการ Server ผ่าน Command Line
SSH ช่วยให้เราสามารถควบคุม Server ได้อย่างเต็มที่ ไม่ว่าจะเป็นการอัพโหลดไฟล์, แก้ไขไฟล์, รันคำสั่งต่างๆ, หรือแม้กระทั่งการจัดการ Database ทั้งหมดนี้ทำได้ผ่าน Command Line Interface (CLI) ซึ่งอาจจะดูยากสำหรับผู้เริ่มต้น แต่เมื่อคุ้นเคยแล้ว จะพบว่ามันมีประสิทธิภาพและสะดวกกว่าการใช้ GUI (Graphical User Interface) อย่าง FTP Client ในหลายๆ กรณี
SSH คืออะไร?
SSH คือโปรโตคอลเครือข่ายที่ช่วยให้เราสามารถสร้างการเชื่อมต่อที่ปลอดภัยไปยัง Server ระยะไกล มันเข้ารหัสข้อมูลทั้งหมดที่ส่งผ่านเครือข่าย ทำให้ยากต่อการดักจับข้อมูลสำคัญ เช่น รหัสผ่าน หรือข้อมูลส่วนตัวอื่นๆ
การเชื่อมต่อ SSH
ก่อนที่เราจะเริ่มใช้งาน SSH ได้ เราต้องมีสิ่งเหล่านี้:
- Host Address/IP Address: ที่อยู่ของ Server ที่เราต้องการเชื่อมต่อ
- Username: ชื่อผู้ใช้ที่เราใช้ในการเข้าสู่ระบบ Server
- Password/SSH Key: รหัสผ่าน หรือ SSH Key ที่ใช้ในการยืนยันตัวตน
- SSH Client: โปรแกรมที่ใช้ในการเชื่อมต่อ SSH (เช่น PuTTY, Terminal, iTerm2)
ขั้นตอนการเชื่อมต่อ SSH:
- เปิด SSH Client: เปิดโปรแกรม SSH Client ที่คุณเลือกใช้
- ป้อนข้อมูลการเชื่อมต่อ: ป้อน Host Address/IP Address, Username, และ Port (โดยทั่วไปคือ 22)
- ยืนยันตัวตน: ป้อน Password หรือเลือก SSH Key ที่ใช้ในการยืนยันตัวตน
- เชื่อมต่อ: กดปุ่ม Connect หรือ Enter เพื่อเชื่อมต่อ
ตัวอย่างการเชื่อมต่อ SSH (ใช้ Terminal บน macOS/Linux):
ssh username@host_address
เมื่อคุณรันคำสั่งนี้ Terminal จะถามรหัสผ่าน หากคุณตั้งค่า SSH Key ไว้ คุณจะไม่ต้องป้อนรหัสผ่าน
ตัวอย่างการเชื่อมต่อ SSH (ใช้ PuTTY บน Windows):
- เปิด PuTTY
- ในช่อง Host Name (or IP address) ให้ป้อน Host Address/IP Address
- ตรวจสอบให้แน่ใจว่า Port คือ 22 และ Connection type คือ SSH
- คลิก Open
- PuTTY จะแสดงหน้าต่าง Terminal ขึ้นมา ป้อน Username และ Password เมื่อระบบถาม
กรณีใช้งานจริง:
สมมติว่าเรามี Server ที่ Host Address คือ `192.168.1.100` และ Username คือ `deployer` เราจะเชื่อมต่อ SSH โดยใช้คำสั่ง:
ssh deployer@192.168.1.100
ข้อผิดพลาดที่พบบ่อย:
- Connection refused: อาจเกิดจาก Server ไม่ได้เปิด SSH หรือ Firewall บล็อกการเชื่อมต่อ
- Incorrect password: ตรวจสอบให้แน่ใจว่าคุณป้อนรหัสผ่านถูกต้อง
- Host key verification failed: อาจเกิดจาก Server มีการเปลี่ยนแปลง SSH Key ให้ลบ SSH Key เก่าออกจาก `~/.ssh/known_hosts` แล้วลองเชื่อมต่อใหม่
การรันคำสั่ง
เมื่อเราเชื่อมต่อ SSH สำเร็จแล้ว เราสามารถรันคำสั่งต่างๆ บน Server ได้เหมือนกับว่าเรากำลังใช้งาน Terminal บน Server โดยตรง
คำสั่งพื้นฐานที่ควรรู้:
ls: แสดงรายการไฟล์และโฟลเดอร์ใน Directory ปัจจุบันcd: เปลี่ยน Directorypwd: แสดง Path ของ Directory ปัจจุบันmkdir: สร้าง Directory ใหม่rm: ลบไฟล์หรือ Directorycp: คัดลอกไฟล์หรือ Directorymv: ย้ายหรือเปลี่ยนชื่อไฟล์หรือ Directorynano/vim: แก้ไขไฟล์ (Text Editor)cat: แสดงเนื้อหาของไฟล์chmod: เปลี่ยน Permissions ของไฟล์หรือ Directorychown: เปลี่ยน Owner ของไฟล์หรือ Directory
ตัวอย่างการรันคำสั่ง:
สมมติว่าเราต้องการแสดงรายการไฟล์ใน Directory `/var/www/html` เราจะใช้คำสั่ง:
ls /var/www/html
ถ้าเราต้องการเปลี่ยน Directory ไปยัง `/var/www/html` เราจะใช้คำสั่ง:
cd /var/www/html
กรณีใช้งานจริง:
สมมติว่าเราต้องการ Restart Web Server (เช่น Apache) เราจะใช้คำสั่ง:
sudo service apache2 restart
ข้อผิดพลาดที่พบบ่อย:
- Permission denied: อาจเกิดจากเราไม่มีสิทธิ์ในการรันคำสั่งนั้นๆ ลองใช้
sudoนำหน้าคำสั่ง - Command not found: อาจเกิดจากคำสั่งนั้นไม่ได้ถูกติดตั้งบน Server หรือไม่ได้อยู่ใน PATH
การจัดการไฟล์
SSH ไม่ได้มีไว้แค่รันคำสั่งเท่านั้น เรายังสามารถใช้มันในการจัดการไฟล์ต่างๆ บน Server ได้อีกด้วย
การอัพโหลดไฟล์:
เราสามารถใช้คำสั่ง scp (Secure Copy) ในการอัพโหลดไฟล์จากเครื่องของเราไปยัง Server:
scp local_file username@host_address:remote_directory
ตัวอย่าง:
สมมติว่าเราต้องการอัพโหลดไฟล์ `index.php` จากเครื่องของเราไปยัง Directory `/var/www/html` บน Server เราจะใช้คำสั่ง:
scp index.php deployer@192.168.1.100:/var/www/html
การดาวน์โหลดไฟล์:
เราสามารถใช้คำสั่ง scp ในการดาวน์โหลดไฟล์จาก Server มายังเครื่องของเรา:
scp username@host_address:remote_file local_directory
ตัวอย่าง:
สมมติว่าเราต้องการดาวน์โหลดไฟล์ `config.php` จาก Directory `/var/www/html` บน Server มายัง Directory ปัจจุบันบนเครื่องของเรา เราจะใช้คำสั่ง:
scp deployer@192.168.1.100:/var/www/html/config.php .
การแก้ไขไฟล์:
เราสามารถใช้ Text Editor อย่าง nano หรือ vim ในการแก้ไขไฟล์บน Server:
nano /var/www/html/index.php
กรณีใช้งานจริง:
สมมติว่าเราต้องการแก้ไขไฟล์ `.env` เพื่อเปลี่ยนค่า Environment Variables เราจะใช้คำสั่ง:
nano .env
ข้อผิดพลาดที่พบบ่อย:
- Permission denied: อาจเกิดจากเราไม่มีสิทธิ์ในการแก้ไขไฟล์นั้นๆ ลองใช้
sudoนำหน้าคำสั่ง (เช่นsudo nano .env) - File not found: ตรวจสอบให้แน่ใจว่าไฟล์นั้นมีอยู่จริง
สรุป
การใช้ SSH เป็นทักษะที่สำคัญสำหรับนักพัฒนา PHP ทุกคน มันช่วยให้เราสามารถเข้าถึงและจัดการ Server ได้อย่างปลอดภัยและมีประสิทธิภาพ ในบทนี้ เราได้เรียนรู้พื้นฐานของการเชื่อมต่อ SSH, การรันคำสั่ง, และการจัดการไฟล์ หวังว่าคุณจะสามารถนำความรู้เหล่านี้ไปประยุกต์ใช้ในการ Deploy และจัดการโปรเจกต์ PHP ของคุณได้
ในบทถัดไป เราจะมาเรียนรู้วิธีการตั้งค่า Database บน Server ซึ่งเป็นส่วนสำคัญในการ Deploy โปรเจกต์ PHP ที่มีการใช้งาน Database