คู่มือ SSH Access สำหรับ Web Hosting
Complete SSH Access Guide for Web Hosting: Connection Setup, Authentication, Commands, and Security
สารบัญ
- SSH คืออะไร และทำไมจึงต้องใช้แทน Telnet
- SSH บน Hosting ไหนใช้ได้บ้าง
- การเชื่อมต่อ SSH ครั้งแรก
- SSH Key Authentication และการตั้งค่า
- คำสั่ง SSH เบื้องต้นที่ใช้บ่อย
- SCP และ SFTP สำหรับถ่ายโอนไฟล์
- SSH Tunneling และ Port Forwarding
- การรักษาความปลอดภัย SSH Server
- SSH Config File สำหรับการเชื่อมต่อง่ายขึ้น
- คำถามที่พบบ่อย (FAQ)
SSH คืออะไร และทำไมจึงต้องใช้แทน Telnet
SSH ย่อมาจาก Secure Shell คือโปรโตคอลเครือข่ายที่ใช้สำหรับการเชื่อมต่อแบบปลอดภัยไปยังเซิร์ฟเวอร์ที่อยู่ไกลออกไป ในช่วงแรก ผู้ดูแลระบบมักใช้ Telnet ซึ่งเป็นโปรโตคอลเก่า แต่ Telnet มีจุดอ่อนที่สำคัญคือการส่งข้อมูลแบบ plain text ซึ่งหมายความว่าหากมีผู้ใจร้ายติดตามการสื่อสาร พวกเขาสามารถดูรหัสผ่านและข้อมูลที่ไวต่อได้ทั้งหมด
SSH แก้ไขปัญหานี้โดยใช้การเข้ารหัส (encryption) ทั้งหมด ข้อมูลทั้งหมดที่ส่งผ่าน SSH tunnel จะถูกเข้ารหัสท่อแม้ว่าจะมีฝ่ายที่ร้ายจูงข้อมูลไป พวกเขาก็ไม่สามารถอ่านได้ SSH ยังเสนอการยืนยันตัวตน (authentication) ที่ปลอดภัยมากขึ้น เช่น SSH keys แทนรหัสผ่าน ซึ่งช่วยป้องกันการถูก brute force attack
วันนี้ SSH เป็นมาตรฐานที่ยอมรับในทั่วโลกสำหรับการเข้าถึงเซิร์ฟเวอร์ ไม่ว่าจะเป็น Web Hosting, VPS, Cloud Server หรือ Dedicated Server ทั้ง Windows และ Linux ต่างใช้ SSH (หรือ PowerShell Remoting บน Windows) เพื่อการจัดการแบบปลอดภัย
SSH บน Hosting ไหนใช้ได้บ้าง
ไม่ใช่ว่า Web Hosting ทุกชนิดจะมี SSH access เพียงแต่การมี SSH นั้นเกี่ยวข้องกับประเภท Hosting ที่คุณเลือก
Shared Hosting: Web Hosting แบบ shared มักจะมี SSH access บ้าง แต่มีข้อจำกัด ผู้ให้บริการส่วนใหญ่เปิด SSH เฉพาะบางแพ็คเกจ หรือต้องเสียเงินเพิ่มเติม การเข้าถึง SSH บน shared hosting มักจะถูกจำกัด คุณสามารถทำกับไฟล์ของตัวเองได้เท่านั้น ไม่ใช่ระบบทั้งหมด
Reseller Hosting: ผู้ขายจำหน่าย (reseller) มักจะมี SSH access เพื่อจัดการเซิร์ฟเวอร์ของพวกเขาและช่วยเหลือลูกค้า reseller hosting ให้คุณมีระดับความเป็นเจ้าของที่สูงกว่า shared hosting
VPS (Virtual Private Server): VPS เป็นตัวเลือกที่ดีเหมาะสมสำหรับผู้ที่ต้องการ SSH access เต็มรูปแบบ ด้วย VPS คุณจะมีอิสระในการติดตั้งซอฟต์แวร์ เปลี่ยนแปลงการตั้งค่า และจัดการทั้งหมดด้วยตนเอง ผู้ให้บริการเช่น AsiaGB.com นำเสนอ VPS บนเซิร์ฟเวอร์ไทยและสิงคโปร์ พร้อม SSH access เต็มสิทธิ์
Dedicated Server: Dedicated server ให้การควบคุมสูงสุด คุณเป็นเจ้าของเซิร์ฟเวอร์เพียงลำพัง ทุกสิ่งทั้งหมดจาก SSH access ไปถึงการจัดการระบบปฏิบัติการอยู่ในมือของคุณ
การเชื่อมต่อ SSH ครั้งแรก
ขั้นตอนแรกในการใช้ SSH คือการเชื่อมต่อไปยังเซิร์ฟเวอร์ของคุณ วิธีการจะแตกต่างกันไปตามระบบปฏิบัติการที่คุณใช้
Mac และ Linux: เปิด Terminal และพิมพ์คำสั่ง ssh ตามด้วยชื่อผู้ใช้และแอดเรสเซิร์ฟเวอร์ ตัวอย่างเช่น:
ssh [email protected] -p 22
หากพอร์ตของคุณต่างจาก 22 (ค่าเริ่มต้น) ให้เพิ่มตัวเลือก -p ตามด้วยหมายเลขพอร์ต ระบบจะขอให้คุณป้อนรหัสผ่าน ให้พิมพ์รหัสผ่านของคุณ (หมายเหตุ: เมื่อพิมพ์รหัสผ่าน จอบอจะไม่แสดงตัวอักษร นั่นคือเรื่องปกติ)
Windows: บนอุปกรณ์ Windows สมัยใหม่ (Windows 10 และสูงกว่า) คุณสามารถเปิด PowerShell หรือ Windows Terminal และใช้คำสั่ง ssh ได้เหมือนกับบน Mac/Linux ถ้าคุณใช้ Windows เวอร์ชันเก่า ให้ดาวน์โหลด PuTTY ซึ่งเป็น SSH client ที่ฟรีและง่ายต่อการใช้ หลังจากติดตั้ง PuTTY ให้:
- เปิด PuTTY
- ในช่อง Host Name (or IP address) ให้ป้อนชื่อหรือแอดเรส IP ของเซิร์ฟเวอร์
- ตรวจสอบให้แน่ใจว่าพอร์ตคือ 22
- คลิก Open
- ป้อนชื่อผู้ใช้และรหัสผ่าน
SSH Key Authentication และการตั้งค่า
แม้ว่าการเข้าถึง SSH ด้วยรหัสผ่านจะสะดวก แต่ SSH keys นั้นปลอดภัยกว่ามาก SSH key pair ประกอบด้วย public key ที่คุณวางไว้บนเซิร์ฟเวอร์ และ private key ที่คุณเก็บไว้ในคอมพิวเตอร์ของคุณเท่านั้น เมื่อคุณพยายามเชื่อมต่อ SSH จะใช้ private key เพื่อพิสูจน์ตัวตนกับ public key บนเซิร์ฟเวอร์ ถ้าพวกเขาตรงกัน คุณจะได้รับอนุญาตให้เข้าถึง
ขั้นตอนการสร้าง SSH Key: ก่อนอื่น ให้สร้าง SSH key pair บนคอมพิวเตอร์ของคุณ บน Mac, Linux หรือ Windows PowerShell ให้ใช้คำสั่ง:
ssh-keygen -t ed25519 -C "[email protected]"
คำสั่งนี้จะสร้าง key pair โดยใช้ Ed25519 ซึ่งเป็นอัลกอริทึมที่ปลอดภัยและเร็ว ระบบจะถามว่าคุณต้องการบันทึก key ไว้ที่ไหน ให้กด Enter เพื่อใช้ตำแหน่งเริ่มต้น (~/.ssh/id_ed25519) จากนั้นระบบจะขอให้คุณตั้ง passphrase สำหรับ private key (ทำให้เพิ่มเติมอีกชั้นของความปลอดภัย)
การอัปโหลด Public Key ไปยังเซิร์ฟเวอร์: วิธีที่ง่ายที่สุดคือใช้คำสั่ง ssh-copy-id บน Mac/Linux:
ssh-copy-id [email protected]
คำสั่งนี้จะอัปโหลด public key ของคุณไปยังเซิร์ฟเวอร์และตั้งค่าสิทธิ์ที่ถูกต้อง หากคุณใช้ Windows หรือ PuTTY คุณต้องอัปโหลด public key ด้วยตนเองโดยผ่านระบบจัดการไฟล์ หรือแก้ไข ~/.ssh/authorized_keys บนเซิร์ฟเวอร์
การเชื่อมต่อด้วย SSH Keys: เมื่อ public key ถูกตั้งค่าแล้ว คุณสามารถเชื่อมต่อ SSH โดยใช้คำสั่งเดิม:
ssh [email protected]
หากถามหา passphrase ให้ป้อน passphrase ที่คุณตั้งไว้ (หรือกด Enter หากไม่ได้ตั้ง) คุณจะเชื่อมต่อได้โดยไม่ต้องป้อนรหัสผ่าน
คำสั่ง SSH เบื้องต้นที่ใช้บ่อย
เมื่อคุณเชื่อมต่อ SSH เรียบร้อยแล้ว คุณจะต้องใช้คำสั่งเพื่อจัดการเซิร์ฟเวอร์ของคุณ นี่คือคำสั่งที่ใช้บ่อยที่สุด
ls: แสดงรายการไฟล์และไดเรกทอรีในตำแหน่งปัจจุบัน
ls
ls -la
ตัวเลือก -la จะแสดงไฟล์ทั้งหมด รวมถึงไฟล์ที่ซ่อนอยู่พร้อมกับรายละเอียด เช่น สิทธิ์และเจ้าของ
cd: เปลี่ยนไดเรกทอรี (Change Directory)
cd /path/to/directory
cd ..
cd ~
cd ~ จะนำคุณไปยังโฮมไดเรกทอรี cd .. จะไปยังไดเรกทอรีหลัก
pwd: แสดงเส้นทางเต็มของไดเรกทอรีปัจจุบัน
pwd
cp: คัดลอกไฟล์หรือไดเรกทอรี
cp file.txt file_copy.txt
cp -r directory/ directory_copy/
mv: ย้ายหรือเปลี่ยนชื่อไฟล์
mv old_name.txt new_name.txt
mv /path/file.txt /new/path/file.txt
rm: ลบไฟล์ (ระวัง: ไม่สามารถกู้คืนได้)
rm file.txt
rm -rf directory/
chmod: เปลี่ยนสิทธิ์ของไฟล์
chmod 644 file.txt
chmod 755 script.sh
grep: ค้นหาข้อความในไฟล์
grep "search_term" file.txt
grep -r "search_term" /path/
tail: แสดงบรรทัดสุดท้ายของไฟล์ (มีประโยชน์สำหรับดูเลจไฟล์)
tail /var/log/apache2/error.log
tail -f /var/log/apache2/error.log
ตัวเลือก -f จะตรวจเฝ้าไฟล์อย่างต่อเนื่อง ซึ่งมีประโยชน์สำหรับดูเลจของเซิร์ฟเวอร์ที่อัปเดตแบบ real-time
SCP และ SFTP สำหรับถ่ายโอนไฟล์
นอกเหนือจากการทำงานบนเซิร์ฟเวอร์ด้วยตรง คุณมักจะต้องถ่ายโอนไฟล์ระหว่างคอมพิวเตอร์ของคุณและเซิร์ฟเวอร์ SCP (Secure Copy Protocol) และ SFTP (SSH File Transfer Protocol) เป็นวิธีปลอดภัยทั้งสองวิธี
SCP: SCP เป็นวิธีที่เรียบง่ายในการคัดลอกไฟล์ผ่าน SSH ไปยังเซิร์ฟเวอร์ของคุณ บนเครื่องคอมพิวเตอร์ของคุณ ให้ใช้คำสั่ง:
scp file.txt [email protected]:/home/username/
scp -r local_folder/ [email protected]:/home/username/
เพื่อดาวน์โหลดไฟล์จากเซิร์ฟเวอร์:
scp [email protected]:/home/username/file.txt ./
SFTP: SFTP นั้นเหมือนกับ FTP ตรวจสอบว่าเป็น secure ดีกว่า คุณสามารถเชื่อมต่อไปยังเซิร์ฟเวอร์ของคุณและแบราวซ์ไฟล์ได้โดยใช้เมนูแบบโต้ตอบ:
sftp [email protected]
จากนั้นคุณสามารถใช้คำสั่งเช่น ls, cd, put (อัปโหลด) และ get (ดาวน์โหลด) เพื่อจัดการไฟล์ ประโยชน์ของ SFTP คือคุณไม่จำเป็นต้องจำเส้นทางเต็มไปยังไฟล์ คุณสามารถไปรอบๆไดเรกทอรีและดูว่าไฟล์ใดอยู่ที่ใดได้อย่างสะดวก
SSH Tunneling และ Port Forwarding
SSH Tunneling คือเทคนิคขั้นสูงที่ให้คุณสร้างการเชื่อมต่อที่ปลอดภัยผ่าน SSH เพื่อเข้าถึงบริการอื่นๆบนเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่น หากคุณมีฐานข้อมูล MySQL ที่เพียงรับฟังในเครื่องเซิร์ฟเวอร์ (127.0.0.1 port 3306) คุณสามารถสร้าง SSH tunnel เพื่อเข้าถึงจากเครื่องของคุณได้อย่างปลอดภัย
Local Port Forwarding: นี่คือวิธีที่คุณส่งต่ออปอร์ตบนเครื่องของคุณไปยังบริการบนเซิร์ฟเวอร์:
ssh -L 3306:127.0.0.1:3306 [email protected] -N
คำสั่งนี้จะเปิด port 3306 บนเครื่องคอมพิวเตอร์ของคุณและส่งต่อการเชื่อมต่อไปยังเซิร์ฟเวอร์ DNS หลังจากนั้น คุณสามารถเชื่อมต่อกับฐานข้อมูลของคุณได้โดยใช้ localhost:3306 ตัวเลือก -N บอกให้ SSH ไม่ต้องเปิด shell แบบโต้ตอบ เพียงสร้าง tunnel เท่านั้น
Remote Port Forwarding: ในทางตรงกันข้าม Remote port forwarding ส่งต่ออปอร์ตบนเซิร์ฟเวอร์ไปยังเครื่องของคุณ ซึ่งมีประโยชน์สำหรับการแชร์บริการที่ทำงานบนเครื่องของคุณ:
ssh -R 8080:127.0.0.1:3000 [email protected] -N
คำสั่งนี้ส่งต่อ port 8080 บนเซิร์ฟเวอร์ไปยัง port 3000 บนเครื่องของคุณ
การรักษาความปลอดภัย SSH Server
หากคุณเป็นเจ้าของเซิร์ฟเวอร์ (VPS หรือ Dedicated Server) การรักษาความปลอดภัย SSH นั้นสำคัญมาก ผู้ใจร้ายมักจะพยายามเข้าถึง SSH เพื่อให้ได้รับการควบคุมเซิร์ฟเวอร์ของคุณ นี่คือวิธีปกป้องตัวเอง
เปลี่ยน Default SSH Port: SSH ใช้ port 22 ตามค่าเริ่มต้น ผู้ใจร้ายรู้เรื่องนี้ โดยค่อนข้างมักจะพยายามเข้าถึง port 22 โดยการเปลี่ยน port ไปเป็นค่าอื่น (เช่น 2222) คุณสามารถลดจำนวนของการพยายามล็อกอินที่ไม่ได้รับอนุญาตได้ เพื่อทำเช่นนี้ ให้แก้ไขไฟล์ /etc/ssh/sshd_config และเปลี่ยนบรรทัด Port 22 ไปเป็น Port 2222 จากนั้นให้เรียกใช้คำสั่งเพื่อรีสตาร์ท SSH daemon:
systemctl restart sshd
ปิดการเข้าถึง Root ผ่าน SSH: ห้ามอนุญาตให้ root เข้าสู่ระบบโดยตรงผ่าน SSH ให้สร้างผู้ใช้ปกติแทนและใช้ sudo หากต้องการสิทธิ์ root ในไฟล์ sshd_config ให้เปลี่ยน PermitRootLogin yes ไปเป็น PermitRootLogin no
ปิดการยืนยันตัวตนด้วยรหัสผ่าน: เมื่อคุณตั้งค่า SSH keys แล้ว คุณควรปิดการเข้าถึงด้วยรหัสผ่าน ในไฟล์ sshd_config ให้เปลี่ยน PasswordAuthentication yes ไปเป็น PasswordAuthentication no
ใช้ Fail2Ban: Fail2Ban เป็นเครื่องมือที่ตรวจเฝ้าการพยายามเข้าสู่ระบบที่ล้มเหลวหลายครั้ง หากมีการพยายามล็อกอินล้มเหลวจำนวนมากจากที่อยู่ IP เดียว Fail2Ban จะบล็อก IP นั้นโดยอัตโนมัติ นี่เป็นวิธีที่มีประสิทธิภาพในการป้องกัน brute force attacks
อัปเดตระบบของคุณ: ตรวจสอบให้แน่ใจว่าระบบปฏิบัติการของคุณและซอฟต์แวร์ SSH อัปเดตอยู่เสมอ ผู้ให้บริการ VPS บางเจ้า เช่น AsiaGB.com มักจะจัดการเรื่องนี้สำหรับคุณ แต่ตรวจสอบว่า security patches ถูกใช้เสมอ
SSH Config File สำหรับการเชื่อมต่อง่ายขึ้น
หากคุณจัดการหลายเซิร์ฟเวอร์ การพิมพ์ชื่อผู้ใช้ชื่อโฮสต์ และพอร์ตทุกครั้งที่คุณต้องเชื่อมต่อได้อาจจะเบื่อ ไฟล์ SSH config ช่วยให้คุณสร้าง shortcut สำหรับการเชื่อมต่อ
สร้างหรือแก้ไขไฟล์ ~/.ssh/config:
Host myserver
HostName server.com
User username
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host anotherserver
HostName another.com
User anotheruser
Port 22
IdentityFile ~/.ssh/id_rsa
เมื่อสร้างไฟล์นี้แล้ว คุณสามารถเชื่อมต่อได้เพียงแค่พิมพ์:
ssh myserver
SSH จะอ่านไฟล์ config และใช้ HOST_NAME, USER, PORT และ IdentityFile ที่คุณตั้งไว้โดยอัตโนมัติ นี่คือการประหยัดเวลามากเมื่อจัดการหลายเซิร์ฟเวอร์