ปัจจุบันในงานด้านไอที บางครั้งเรามีความจำเป็นต้องเข้าถึงระบบจากระยะไกล ไม่ว่าจะเป็นการจัดการเซิร์ฟเวอร์ ดูแลเว็บไซต์ หรือการโอนย้ายไฟล์ การเชื่อมต่อที่ปลอดภัยและเชื่อถือได้จึงมีความสำคัญมาก ซึ่งหนึ่งในเครื่องมือที่นิยมใช้อย่างแพร่หลายคือ SSH หรือ Secure Shell บทความนี้จะพาคุณไปรู้จักกับ SSH แบบละเอียด
SSH คืออะไร
SSH (Secure Shell) คือโปรโตคอลเครือข่ายที่ช่วยให้ผู้ใช้สามารถเชื่อมต่อและควบคุมอุปกรณ์ปลายทางจากระยะไกลผ่านการเข้ารหัสข้อมูลทั้งหมด โดยเฉพาะบนระบบปฏิบัติการแบบ Unix/Linux
จุดเด่นของ SSH:
- ปลอดภัยกว่าการเชื่อมต่อแบบ Telnet หรือ FTP
- รองรับการรับส่งข้อมูลแบบเข้ารหัส
- สามารถทำการยืนยันตัวตนผ่านรหัสผ่านหรือ SSH Key
การทำงานของ SSH
SSH ทำงานผ่านการเข้ารหัสแบบ Public Key Cryptography โดยมีหลักการพื้นฐานดังนี้:
- ใช้คู่คีย์ (Public Key และ Private Key) ในการเข้ารหัสและถอดรหัสข้อมูล
- ใช้พอร์ตมาตรฐานคือ Port 22
- มีการตรวจสอบตัวตนผู้ใช้ก่อนเข้าใช้งาน
ประโยชน์ของการใช้ SSH
- ความปลอดภัยสูง: ข้อมูลที่รับส่งจะถูกเข้ารหัส
- ใช้งานจากระยะไกลได้ทุกที่
- สามารถโอนย้ายไฟล์ผ่าน SCP/SFTP ได้อย่างปลอดภัย
- รองรับการใช้งาน Tunnel เพื่อป้องกันการดักฟัง

การติดตั้ง SSH
บน Linux (Debian/Ubuntu)
- ติดตั้ง OpenSSH Server:
- root@vm01:~#
sudo apt update - root@vm01:~#
sudo apt install openssh-server
- root@vm01:~#
- ตรวจสอบสถานะของ SSH Service:
- root@vm01:~#
sudo systemctl status ssh
- root@vm01:~#
- ให้ SSH ทำงานอัตโนมัติเมื่อเปิดเครื่อง:
- root@vm01:~#
sudo systemctl enable ssh
- root@vm01:~#
- เริ่มต้นใช้งาน SSH ทันที:
- root@vm01:~#
sudo systemctl start ssh
- root@vm01:~#
บางระบบอาจใช้ชื่อ
sshdแทนssh(โดยเฉพาะบน CentOS หรือ RHEL)
บน Windows 10/11
- ไปที่ Settings → Apps → Optional Features → เพิ่มฟีเจอร์ “OpenSSH Client” และ “OpenSSH Server” (หากยังไม่มี)
- หรือใช้ PowerShell:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' - เชื่อมต่อไปยัง Server ด้วย PowerShell หรือ Windows Terminal:
ssh user@hostname
บน macOS
- เปิดใช้งาน Remote Login:
- ไปที่ System Preferences → Sharing → ติ๊ก “Remote Login”
- macOS มี SSH Client ติดตั้งมาแล้ว สามารถใช้ Terminal ได้ทันที:
ssh user@hostname
การใช้งานคำสั่ง SSH พื้นฐาน
SSH ใช้เพื่อเข้าสู่ระบบหรือสั่งการจากระยะไกลผ่านเครือข่าย
ตัวอย่างคำสั่ง:
- เชื่อมต่อไปยัง Server:
ssh user@hostname - กำหนดพอร์ตเอง (เช่น Port 2222 แทน 22):
ssh -p 2222 user@hostname - ใช้ Private Key (.pem หรือ .rsa) ในการเข้าสู่ระบบ:
ssh -i ~/.ssh/mykey.pem user@hostname - ตั้งชื่อเครื่อง (Alias) ไว้ใน
~/.ssh/configก็ได้:Host myserver HostName example.com User myuser Port 2222 IdentityFile ~/.ssh/mykey.pem
จากนั้นใช้คำสั่ง
ssh myserverได้เลย
การใช้งาน SSH Key
การใช้ SSH Key แทนรหัสผ่านช่วยเพิ่มความปลอดภัย
สร้าง SSH Key:
ssh-keygen -t rsa -b 4096
- ค่าเริ่มต้นจะเก็บไว้ที่
~/.ssh/id_rsa(private) และ~/.ssh/id_rsa.pub(public)
คัดลอก Public Key ไปยัง Server:
ssh-copy-id user@hostname
หรือทำด้วยตนเอง:
- เปิดไฟล์
~/.ssh/id_rsa.pub - คัดลอกเนื้อหาทั้งหมดไปวางใน Server ที่
~/.ssh/authorized_keys
อย่าลืมให้สิทธิ์ที่เหมาะสมแก่ไฟล์:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
SSH Agent และ Agent Forwarding
SSH Agent ช่วยจัดการ Private Key โดยไม่ต้องใส่รหัสทุกครั้ง
เริ่ม SSH Agent:
eval "$(ssh-agent -s)"
เพิ่ม Key เข้า Agent:
ssh-add ~/.ssh/id_rsa
Forward Agent (ใช้ key เดียวกันเมื่อ SSH ต่อเนื่องหลายเครื่อง):
เพิ่มใน ~/.ssh/config:
Host *
ForwardAgent yes
เหมาะสำหรับการทำงานผ่านหลาย Server โดยไม่ต้องใส่ Key ซ้ำ
SCP และ SFTP
ใช้ SSH ในการโอนย้ายไฟล์
SCP (Secure Copy):
- ส่งไฟล์จากเครื่องเราไป Server:
scp file.txt user@host:/path/ - ดาวน์โหลดไฟล์จาก Server:
scp user@host:/path/file.txt . - ส่งโฟลเดอร์ทั้งหมด:
scp -r myfolder user@host:/destination/
SFTP (SSH File Transfer Protocol):
- เริ่มใช้งาน:
sftp user@hostname - คำสั่งภายใน SFTP:
lsแสดงไฟล์get filenameดาวน์โหลดไฟล์put filenameอัปโหลดไฟล์cdย้ายไดเรกทอรี
SSH Tunnel
SSH Tunnel ช่วยให้เราส่งข้อมูลผ่าน SSH อย่างปลอดภัย โดยเฉพาะเมื่อเข้าถึงระบบภายใน
Local Port Forwarding
เช่น ต้องการเข้าถึง MySQL ที่ Server ผ่านพอร์ต 3306:
ssh -L 3306:localhost:3306 user@host
- ตอนนี้เราสามารถเชื่อมต่อ
localhost:3306บนเครื่องเรา เหมือนอยู่ที่ Server
Remote Port Forwarding
หากต้องการเปิดพอร์ตของเครื่องเราให้คนใน Server เข้าถึง:
ssh -R 8080:localhost:80 user@host
Dynamic Port Forwarding (SOCKS Proxy)
เหมาะสำหรับใช้ Proxy เว็บผ่าน SSH:
ssh -D 1080 user@host
จากนั้นตั้งค่า browser หรือโปรแกรมอื่นให้ใช้ SOCKS proxy ที่
localhost:1080
การตั้งค่าเพื่อความปลอดภัย
- ปิดการเข้าสู่ระบบแบบ root
- ปิดการเข้าสู่ระบบด้วยรหัสผ่าน
- เปิดใช้งาน Fail2Ban
- ใช้ Firewall จำกัด IP
การจัดการผู้ใช้งาน
- เพิ่มผู้ใช้งานใหม่:
sudo adduser newuser
- สร้างโฟลเดอร์
.sshและไฟล์authorized_keys
ปัญหาที่พบบ่อย
- Connection refused: SSH Server อาจไม่ได้ทำงานหรือ firewall บล็อก
- Permission denied: Key ไม่ถูกต้อง หรือไม่ได้รับอนุญาต
- Timeout: เชื่อมต่อไม่สำเร็จเพราะ latency หรือ firewall
สรุป
SSH เป็นเครื่องมือพื้นฐานที่จำเป็นสำหรับการจัดการระบบจากระยะไกล โดยเฉพาะในยุค Cloud และ DevOps ผู้ที่เรียนรู้และเข้าใจ SSH จะสามารถทำงานด้านระบบและความปลอดภัยได้อย่างมีประสิทธิภาพและปลอดภัยมากยิ่งขึ้น

English