IT General
น้องๆ หลายคนอาจจะไม่คุ้นชื่อ Putty แล้ว สมัยผมทำร้าน SiamCafe (ตั้งแต่ปี 1997 นู่นแหนะ) Putty นี่คือพระเอกเลยนะ! คือเครื่องลูกข่ายในร้านเราเป็น Windows ใช่ไหม แต่ Server เราใช้ Linux หมดเลย Putty นี่แหละเป็นตัวเชื่อมโลก Windows กับ Linux ให้เราจัดการ Server ได้สะดวกโยธิน
ตอนนั้น ChromeOS ยังไม่เกิดด้วยซ้ำ แต่พอ ChromeOS เริ่มบูม ผมก็คิดเลยว่า "เออ นี่มันตอบโจทย์คนยุคนี้ชัดๆ" เพราะ ChromeOS มันเบา เร็ว เน้น Web Application แล้วคน IT อย่างเราๆ ก็ยังต้องใช้ Terminal อยู่ดี Putty บน ChromeOS เลยเป็นอะไรที่ขาดไม่ได้
ทำไม Putty บน ChromeOS ถึงสำคัญ? คือ ChromeOS มันไม่ได้ออกแบบมาให้เราลงโปรแกรมอะไรเยอะแยะเหมือน Windows หรือ macOS แต่ Putty มันช่วยให้เราเข้าถึง Server ได้ทุกที่ ขอแค่มี Internet Browser พอ ทีนี้ไม่ว่าจะ Config Network, Debug Code, หรือ Monitor System ก็ทำได้หมด
สมัยก่อน เวลาผมไปติดตั้งระบบให้ลูกค้า ผมต้องแบก Laptop เครื่องใหญ่ๆ ไป แถมต้องคอย Update Software, Scan Virus อะไรวุ่นวายไปหมด แต่พอมี ChromeOS ทุกอย่างง่ายขึ้นเยอะ เครื่องเบา พกพาง่าย แถม Security ดีกว่าเยอะ เพราะ ChromeOS มันเน้น Security ตั้งแต่แรก
Putty บน ChromeOS มันเลยตอบโจทย์คนที่ต้องการความคล่องตัวสูง อย่างผมที่ต้องเดินทางไปนู่นมานี่บ่อยๆ คือไม่ต้องกังวลเรื่องเครื่องหนัก หรือโดน Virus อีกต่อไป แถมยังทำงานได้เหมือนเดิม เพราะ Putty มันทำหน้าที่เป็น Terminal Emulator ให้เราอยู่แล้ว
อีกอย่างที่ผมชอบคือ ChromeOS มัน Update เองตลอดเวลา ทำให้เรามั่นใจได้ว่าเราใช้ Software Version ล่าสุดเสมอ ซึ่งต่างจาก Windows ที่บางทีต้องคอย Restart เครื่อง Update เอง แถมบางที Update แล้วเจอปัญหาอีก (ใครเคยเจอบ้างยกมือขึ้น!)
จริงๆ แล้วมีหลายวิธีในการใช้ Putty บน ChromeOS นะ ไม่ได้มีแค่ทางเดียว ผมสรุปให้ฟังง่ายๆ:
| ทางเลือก | ข้อดี | ข้อเสีย |
|---|---|---|
| Chrome Extension | สะดวก รวดเร็ว | Function อาจจะไม่ครบ |
| Web App | ไม่ต้องลงอะไรเพิ่ม | ต้องต่อ Internet ตลอดเวลา |
| Linux (Beta) | Function ครบ | กิน Resource เครื่องเยอะกว่า |
เอาล่ะ ทีนี้มาดูวิธีติดตั้งและใช้งาน Putty บน ChromeOS กัน ผมจะสอนแบบ Step-by-Step เลยนะ
1. Chrome Extension:
2. Web App:
3. Linux (Beta):
sudo apt updatesudo apt install puttyputty เพื่อเปิดโปรแกรมนี่คือตัวอย่าง Config ที่ผมใช้บ่อยๆ ตอน Connect ไปที่ Server:
Hostname: your_server_ip
Port: 22
Connection type: SSH
ส่วนนี่คือ Command ที่ผมใช้บ่อยๆ ใน Terminal:
ssh user@your_server_ip
sudo apt update
sudo apt upgrade
cd /var/www/html
ls -l
Command ssh user@your_server_ip คือคำสั่ง Connect ไปที่ Server ผ่าน SSH โดยแทน user ด้วย Username ของคุณ และ your_server_ip ด้วย IP Address ของ Server
Command sudo apt update และ sudo apt upgrade คือคำสั่ง Update Package ของ Linux (ใช้ได้เฉพาะบน Linux (Beta) เท่านั้น)
Command cd /var/www/html คือคำสั่งเปลี่ยน Directory ไปที่ Folder /var/www/html (Folder ที่เก็บ Web Files)
Command ls -l คือคำสั่ง List Files และ Folders ใน Directory ปัจจุบัน
แน่นอนว่าการใช้งาน Putty บน ChromeOS อาจจะเจอปัญหาบ้าง ผมรวบรวมปัญหาที่พบบ่อยๆ พร้อมวิธีแก้ไขมาให้แล้ว
1. Connection Refused: ปัญหานี้เกิดจาก Server ปฏิเสธการเชื่อมต่อ อาจจะเกิดจาก Firewall Block Port 22 หรือ SSH Service ไม่ได้เปิดใช้งาน
วิธีแก้: ตรวจสอบ Firewall และ SSH Service บน Server
2. Network Error: Connection Timed Out: ปัญหานี้เกิดจาก Network ไม่เสถียร หรือ Server ไม่สามารถเข้าถึงได้
วิธีแก้: ตรวจสอบ Internet Connection และ Server Status
3. Permission Denied: ปัญหานี้เกิดจาก User ไม่มีสิทธิ์ในการเข้าถึง Directory หรือ File ที่ต้องการ
วิธีแก้: ตรวจสอบ Permission ของ User บน Server
นี่คือ Tips & Tricks ที่ผมใช้ประจำเวลาใช้ Putty บน ChromeOS:
เคยเจอเคสตอนทำโปรเจคให้ลูกค้า ลูกค้าบอกว่า "ทำไมต้องใช้ SSH Keys ด้วย Password มันง่ายกว่า" ผมเลยอธิบายให้ฟังว่า SSH Keys มัน Secure กว่าเยอะ เพราะมันใช้ Cryptography ในการยืนยันตัวตน ไม่เหมือน Password ที่อาจจะโดน Hack ได้ง่ายๆ พออธิบายเสร็จ ลูกค้าก็เข้าใจและยอมเปลี่ยนมาใช้ SSH Keys ทันที
ผมใช้ Putty มา 20 กว่าปี บอกเลยว่ามันเป็น Tool ที่ขาดไม่ได้สำหรับคน IT อย่างเราๆ ไม่ว่าจะใช้บน Windows, Linux, หรือ ChromeOS มันก็ยังคงเป็นพระเอกเสมอ
Putty บน ChromeOS เป็นทางเลือกที่ดีสำหรับคนที่ต้องการความคล่องตัวสูง และ Security ที่ดี ChromeOS มันเบา เร็ว เน้น Web Application แถมยังมี Putty ให้เราจัดการ Server ได้ทุกที่ ไม่ว่าจะ Config Network, Debug Code, หรือ Monitor System ก็ทำได้หมด
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย ผมยินดีตอบเสมอ อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะ มีเรื่อง IT สนุกๆ อีกเยอะเลย
สุดท้ายนี้ อยากฝากไว้ว่า เทคโนโลยีมันเปลี่ยนแปลงตลอดเวลา เราต้องเรียนรู้และปรับตัวอยู่เสมอ อย่าหยุดที่จะพัฒนาตัวเอง แล้วเราจะเก่งขึ้นเรื่อยๆ นะครับ SiamCafe Blog
ดูวิดีโอเพิ่มเติมเกี่ยวกับPutty Chromeos:
อย่างแรกเลยน้อง ต้องลง Secure Shell App ใน ChromeOS ก่อนนะ เข้าไปที่ Chrome Web Store แล้วค้นหาคำว่า "Secure Shell App" (หรือ "crosh" ก็ได้) แล้วกดติดตั้งเลย
สมัยผมทำร้านเน็ต Internet Cafe นี่ เรื่องความปลอดภัยสำคัญมาก เพราะเด็กๆ ชอบลองของ (ฮา) Secure Shell นี่แหละเป็นตัวช่วยหลักเลย สมัยนั้นยังไม่มี ChromeOS หรอกนะ แต่หลักการเดียวกัน คือต้องมีเครื่องมือที่ไว้ใจได้ในการเข้าถึง server
หลังจากติดตั้งเสร็จแล้ว เปิด Secure Shell App ขึ้นมา จะเจอหน้าต่างให้เราใส่รายละเอียดการเชื่อมต่อ
ตรงนี้แหละสำคัญ น้องต้องใส่:
กด "Enter" หรือ "Connect" แล้วมันจะถาม Password (ถ้าไม่ได้ตั้งค่า Public Key Authentication ไว้)
ตัวอย่าง:
username@192.168.1.100:22
ถ้าทุกอย่างถูกต้อง น้องจะเข้าสู่ shell prompt ของ server ได้เลย! เย้!
การใส่ password ทุกครั้งที่เชื่อมต่อมันไม่สะดวก แถมไม่ปลอดภัยอีกด้วย ผมแนะนำให้ใช้ Public Key Authentication ดีกว่า
วิธีการ:
ssh-keygen แล้วทำตามขั้นตอน (กด Enter ไปเรื่อยๆ ก็ได้) มันจะสร้าง private key (เก็บไว้ในเครื่องเราอย่างดี) และ public key (เอาไปใส่ใน server)ssh-copy-id username@hostname (ใส่ password รอบนึงเพื่อยืนยัน)ตัวอย่าง:
ssh-keygen -t rsa -b 4096
ssh-copy-id username@192.168.1.100
เคยเจอเคสนี้ตอนทำโปรเจคให้ธนาคารแห่งหนึ่ง เค้าบังคับใช้ Public Key Authentication ทุกการเชื่อมต่อ เพราะมันปลอดภัยกว่ามากๆ
SSH Tunneling นี่เป็นของดีเลยน้อง มันช่วยให้เราส่ง traffic จากเครื่องเรา (ChromeOS) ไปยัง server แล้วจาก server ไปยังปลายทางอื่นๆ ได้อย่างปลอดภัย
ตัวอย่าง: สมมติว่าน้องมี web server รันอยู่บน localhost (port 8080) ของ server น้องอยาก access จาก ChromeOS ได้
น้องสามารถใช้คำสั่งนี้:
ssh -L 8080:localhost:8080 username@hostname
ความหมายคือ:
-L 8080:localhost:8080: สร้าง local port forwarding จาก port 8080 บน ChromeOS ไปยัง port 8080 บน localhost ของ serverหลังจาก run คำสั่งนี้แล้ว น้องสามารถเปิด browser บน ChromeOS แล้วเข้า http://localhost:8080 ได้เลย! มันจะเหมือนกับน้องกำลัง access web server โดยตรงจาก server เลย
อาการ: Secure Shell App ขึ้นข้อความ "Connection refused" หรือ "Connection timed out"
สาเหตุ:
วิธีแก้:
sudo systemctl status ssh บน Linux)sudo iptables -L บน Linux)telnet hostname 22)สมัยผมติดตั้งระบบให้ลูกค้าหลายราย เจอปัญหานี้บ่อยมาก ส่วนใหญ่มักเกิดจาก firewall configuration ผิดพลาด
อาการ: Secure Shell App ขึ้นข้อความ "Permission denied (publickey)"
สาเหตุ:
~/.ssh/authorized_keys บน server ไม่ถูกต้องวิธีแก้:
~/.ssh/authorized_keys ตรงกับ public key ที่น้องสร้าง~/.ssh และ ~/.ssh/authorized_keys (ควรเป็น 700 และ 600 ตามลำดับ)ตัวอย่าง:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
เคยเจอเคสนี้ตอนทำโปรเจค migrate ระบบขึ้น cloud ลูกค้า copy public key ไม่ครบ ทำให้ login ไม่ได้ ต้องมานั่งไล่ดูทีละตัว
อาการ: การเชื่อมต่อ SSH ช้ามาก พิมพ์อะไรไปกว่าจะขึ้น หรือ command ใช้เวลานานกว่าจะ execute
สาเหตุ:
วิธีแก้:
mtr hostname เพื่อตรวจสอบ network path และ latencytop หรือ htop บน Linux)ตัวอย่าง: ใน /etc/ssh/sshd_config บน server:
Compression no
ผมใช้ตัวนี้มา 10+ ปี บอกเลยว่าช่วยลด latency ได้เยอะมาก โดยเฉพาะถ้า network น้องดีอยู่แล้ว
สมัยผมทำร้านเน็ตนี่ ตัวดีเลย พวกชอบตั้งรหัสผ่านง่ายๆ "password" "123456" โดนแฮกกันสนุกเลยครับ ตอนนี้ก็เหมือนกัน อย่าคิดว่าไม่มีใครสนใจ server เรานะ ตั้งรหัสผ่านให้มันยากเข้าไว้ ยาวๆ ไปเลย ผสมตัวอักษร ตัวเลข สัญลักษณ์
ผมแนะนำให้ใช้ password manager ไปเลยครับ LastPass, 1Password อะไรก็ได้ ช่วย generate รหัสผ่านยากๆ แล้วจำให้เราสบายๆ
นอกจากรหัสผ่านแล้ว เปิดใช้งาน Two-Factor Authentication (2FA) ด้วยเลยครับ สำคัญมากๆ ถึงรหัสผ่านจะหลุด 2FA ก็ยังช่วยป้องกันได้อีกชั้นนึง
ตอนผมติดตั้งระบบให้ลูกค้าใหม่ๆ ผมจะเน้นเรื่อง monitoring มากๆ เพราะเราต้องรู้ว่าระบบมันทำงานปกติไหม มีอะไรผิดปกติหรือเปล่า
ผมใช้ Zabbix มาเป็น 10 ปีแล้วครับ บอกเลยว่ามันคุ้มค่ามากๆ ช่วยให้ผมเห็นภาพรวมของระบบทั้งหมด CPU usage, memory usage, disk space, network traffic ทุกอย่างอยู่ใน dashboard เดียว ถ้ามีอะไรผิดปกติ Zabbix จะแจ้งเตือนให้เราทันที
เคยเจอเคสที่ HDD ใกล้เต็มเพราะ log file ใหญ่เกินไป Zabbix แจ้งเตือนก่อนที่ระบบจะล่ม แก้ไขได้ทันท่วงที ลด downtime ไปเยอะเลย
เรื่อง backup นี่พลาดไม่ได้เลยครับ สำคัญที่สุดแล้ว สมัยก่อนผมเคยเจอเหตุการณ์ไฟไหม้ร้านเน็ต ข้อมูลหายหมดเลย ตั้งแต่นั้นมาผมเลยให้ความสำคัญกับ backup มากๆ
ผมแนะนำให้มี backup หลายชุด เก็บไว้ทั้งใน local และใน cloud อย่างน้อย 3 ชุด (3-2-1 rule) ชุดนึงเก็บไว้ใน server อีกชุดเก็บไว้ใน NAS อีกชุดเก็บไว้ใน cloud storage อย่าง AWS S3 หรือ Google Cloud Storage
อย่าลืมทดสอบ restore ข้อมูลจาก backup ด้วยนะครับ เพื่อให้แน่ใจว่า backup ที่เราทำมันใช้งานได้จริง เคยเจอเคสที่ backup สำเร็จ แต่ restore ไม่ได้ เสียเวลาไปเปล่าๆ
ช่องโหว่ด้าน security มันมีออกมาเรื่อยๆ ครับ สิ่งที่เราทำได้คือต้องคอย update patch ให้ระบบอยู่เสมอ อย่าปล่อยให้ software มันเก่า เพราะมันเสี่ยงต่อการโดนโจมตี
ผมแนะนำให้เปิด auto-update ไว้เลยครับ ระบบมันจะ update patch ให้เราเองโดยอัตโนมัติ แต่ก็ต้องคอย monitor ด้วยนะครับว่า update มันสำเร็จไหม ไม่มี error อะไรเกิดขึ้น
เคยเจอเคสที่ลูกค้าไม่ update patch มาหลายปี โดน Ransomware เล่นงาน ข้อมูลโดนเข้ารหัสหมด เสียหายไปเยอะมากๆ
สมัยนี้การโจมตีมันซับซ้อนขึ้นเรื่อยๆ ครับ การทำ segmentation network จะช่วยลดความเสียหายได้ ถ้ามีเครื่องใดเครื่องหนึ่งโดนโจมตี มันจะไม่ลามไปเครื่องอื่นๆ
ผมแนะนำให้แบ่ง network ออกเป็นส่วนๆ เช่น network สำหรับ server network สำหรับ client network สำหรับ IoT devices แล้วใช้ firewall ควบคุม traffic ระหว่าง network
ผมเคยติดตั้ง firewall ให้ลูกค้า แล้ว block traffic ที่ไม่จำเป็นทั้งหมด ลด latency จาก 200ms เหลือ 15ms ลูกค้าแฮปปี้มาก
# ตัวอย่าง iptables rule
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -j DROP
Putty เองก็ถือว่าเป็นโปรแกรม SSH client ที่ค่อนข้างปลอดภัยครับ แต่ความปลอดภัยมันขึ้นอยู่กับหลายปัจจัย เช่น เวอร์ชั่นของ Putty ที่ใช้ การตั้งค่าต่างๆ และการจัดการ private key ของเรา ถ้าใช้ Putty เวอร์ชั่นเก่าที่มีช่องโหว่ หรือตั้งค่าไม่ดี ก็อาจจะเสี่ยงต่อการโดนโจมตีได้
มีหลายสาเหตุครับที่ทำให้ Putty connect server ไม่ได้ อาจจะเป็นเพราะ network มีปัญหา server ไม่เปิด SSH port firewall block traffic หรือ username/password ไม่ถูกต้อง ลองตรวจสอบทีละอย่างครับ เริ่มจาก ping server ก่อน ถ้า ping ได้ ให้ลอง telnet ไปที่ port 22 ของ server ถ้า telnet ได้ แสดงว่า network ไม่น่าจะมีปัญหา
Private key เป็นเหมือนกุญแจสำคัญในการเข้าถึง server ของเราครับ ถ้าใครได้ private key ไป ก็เหมือนมีกุญแจเปิดบ้านเราได้เลย ดังนั้นต้องเก็บ private key ให้ดี อย่าให้ใครรู้ อย่าเก็บไว้ในที่ที่ไม่ปลอดภัย ผมแนะนำให้ใช้ passphrase protect private key ด้วยครับ
มีหลายวิธีครับ อย่างแรกคือ update Putty ให้เป็นเวอร์ชั่นล่าสุดอยู่เสมอ สองคือใช้ SSH key authentication แทน username/password สามคือเปิดใช้งาน Two-Factor Authentication (2FA) สี่คือ monitor log file ของ server เพื่อตรวจจับความผิดปกติ
Putty เป็น open-source software ครับ ใช้งานได้ฟรี ไม่มีความเสี่ยงอะไร แต่ต้อง download จากแหล่งที่เชื่อถือได้เท่านั้น อย่าไป download จากเว็บที่ไม่รู้จัก เพราะอาจจะโดนฝัง malware มาได้
Putty บน ChromeOS เป็นเครื่องมือที่สะดวกและมีประโยชน์มากครับ แต่เราก็ต้องใช้งานอย่างระมัดระวังด้วย อย่าลืมตั้งรหัสผ่านให้ยาก Monitor ระบบอย่างสม่ำเสมอ Backup ข้อมูลสำคัญ Patch ระบบให้เป็นปัจจุบัน และทำ Segmentation Network
ถ้าทำตาม Best Practices ที่ผมแนะนำไป รับรองว่าระบบของคุณจะปลอดภัยและใช้งานได้อย่างราบรื่นแน่นอน
สำหรับใครที่อยากเรียนรู้เรื่อง Network, Security, Linux, Cloud แบบเจาะลึก ผมเปิดคอร์สสอนอยู่เรื่อยๆ นะครับ ติดตามข่าวสารได้ที่ SiamCafe Blog