หากคุณใช้ Linux มาสักพัก คุณคงเคยได้ยินเครื่องมือที่เรียกว่า SSH Secure Shell (SSH) คือโปรโตคอลเครือข่ายสำหรับสร้างการเชื่อมต่อที่ปลอดภัยระหว่าง client และ remote server ออกแบบมาเพื่อให้ผู้ใช้ล็อกอินเข้าสู่คอมพิวเตอร์ระยะไกลได้อย่างปลอดภัยผ่านเครือข่าย บทความนี้จะแนะนำวิธีตั้งค่าและคัดลอก SSH keys ไปยังเซิร์ฟเวอร์อย่างง่ายดาย
ติดตั้ง SSH
ขั้นแรก ติดตั้ง SSH server หาและติดตั้งแพ็กเกจ openssh-server ใน Software Center หรือ package manager หรือหากอยู่บนเซิร์ฟเวอร์ (หรือชอบใช้เทอร์มินัล) เปิดเทอร์มินัลและพิมพ์:
# Ubuntu/Debian sudo apt install openssh-server # Fedora/CentOS/REHL sudo dnf install openssh-server
เปิดใช้งาน SSH ใน Linux
หลังติดตั้ง OpenSSH server แล้ว ต้อง start และ enable systemd unit ด้วยคำสั่ง:
sudo systemctl enable --now ssh
สร้าง SSH Keys
หลังติดตั้ง openssh server แล้ว สร้าง SSH key pairs ตรวจสอบก่อนว่าไม่มี key pair เดิมอยู่ เพราะกระบวนการนี้จะเขียนทับเดิม
ตรวจสอบ key pair เดิมด้วยคำสั่ง:
ls -la ~/.ssh
หากมี key pair เดิม จะแสดงไฟล์ id_rsa และ id_rsa.pub
หลังยืนยันว่าไม่มี key pair เดิม สร้าง key ใหม่ได้ หากมีเดิม ให้ backup เก็บไว้ก่อน
สร้าง key ใหม่ด้วยคำสั่ง:
ssh-keygen -t rsa -b 4096
คำสั่งนี้เรียกใช้ ssh-keygen เพื่อสร้าง SSH key pair แบบ interactive ใช้ -t ระบุประเภท key (RSA) และ -b ระบุขนาดบิต (4096 bits)
ควรใช้ตำแหน่งเริ่มต้นในการเก็บ SSH keys เพื่อไม่ต้องพิมพ์พาธเมื่อเชื่อมต่อ
หากไม่ต้องการเข้ารหัส key ด้วย passphrase กด Enter เพื่อข้าม
คัดลอก Key ไปยัง Remote Server
หลังสร้าง SSH key pair ใหม่แล้ว ต้องอัปโหลดไปยังเครื่องระยะไกลที่ต้องการจัดการ
วิธีที่มีประสิทธิภาพที่สุดคือใช้คำสั่ง ssh-copy-id:
ssh-copy-id remote_user@remote_IP
หากใช้ keyfile ที่มีชื่อไฟล์แยกต่างหาก ใช้คำสั่งระบุพาธ:
ssh-copy-id -i ~/.ssh/id_rsa remote_user@remote_IP
หากล็อกอินเครื่องระยะไกลครั้งแรก ต้องยอมรับ fingerprint แล้วใส่รหัสผ่าน SSH ของ remote user
หลังยืนยันตัวตนแล้ว ssh-copy-id จะนำเนื้อหา id_rsa.pub ไปต่อท้ายไฟล์ ~/.ssh/authorized_keys บนเครื่องระยะไกลและปิดการเชื่อมต่อ
ล็อกอินเข้าสู่ Remote Machine
หลังทำขั้นตอนทั้งหมดสำเร็จ คุณสามารถล็อกอินเข้าสู่ remote server โดยไม่ต้องใส่รหัสผ่าน
ทดสอบด้วยคำสั่ง:
ssh remote_user@remote_ip
หากไม่ได้ตั้ง passphrase สำหรับ key จะล็อกอินอัตโนมัติ
คำถามที่พบบ่อย
1. SSH ปลอดภัยไหม?
SSH เป็นเครื่องมือความปลอดภัยที่ทรงพลัง แต่ปลอดภัยแค่ไหนก็ขึ้นอยู่กับไฟล์การตั้งค่า (configuration file) SSH server ที่ไม่ได้ตั้งค่า/ตั้งค่าผิดอาจเปราะบางต่อแฮกเกอร์และการเข้าถึงจากบุคคลที่สาม ต้อง secure SSH configuration ทันทีหลังติดตั้ง
2. SSH authorized_keys อยู่ที่ไหน?
ไฟล์ authorized_keys เก็บ public key ของแต่ละผู้ใช้ และระบุว่าใครได้ล็อกอินเข้าเซิร์ฟเวอร์ ใน Linux มักอยู่ในโฟลเดอร์ .ssh ใน home directory ของผู้ใช้
3. แก้ไขปัญหา ssh-copy-id permission denied ยังไง?
ปัญหานี้เกิดเมื่อมี public key ตั้งค่าไว้บน remote server แล้ว และปิด password authentication แก้ไขโดย: ล็อกอินเข้าเซิร์ฟเวอร์ เปิด password authentication ใน /etc/ssh/sshd_config รัน ssh-copy-id อีกครั้ง หลังคัดลอก key ใหม่เสร็จ ให้ปิด password authentication อีกครั้ง
สรุป
ตอนนี้คุณตั้งค่าและใช้งาน SSH แล้ว ขั้นตอนต่อไปควร secure SSH configuration หรือหากใช้ Windows เรียนรู้วิธีสร้าง SSH key pair ใน Windows