[RPi] SSH (Secure Shell) กับ Raspberry Pi บนหลาย ๆ แพลตฟอร์ม
บล๊อกนี้ เราจะมาลองเล่นและใช้งาน SSH-Client บนระบบปฎิบัติการต่าง ๆ ทั้ง Windows, macOS, Linux, Android, iOS และ Chrome กันครับ โดยจะทำเพียงบน Local Network เท่านั้นนะครับ เพื่อความเข้าใจพื้นฐานก่อน … มาลุยกันเลยยยย
SSH คืออะไร ?
SSH หรือ Secure SHell คือ เป็นวิธีการ Remote Access ไปยังคอมพิวเตอร์เซิฟเวอร์ (SSH-Server) แบบ Command line (หน้าจอสีดำ) โดยที่มีการเข้ารหัสข้อมูลก่อนที่จะส่งผ่านไปยังระบบเครือข่ายทุกครั้ง (แทนที่จะส่งข้อมูลแบบ Text ไปตรง ๆ) จึงทำให้มีความปลอดภัยขึ้น ไม่โดนดักจับข้อมูลกลางทางได้ (Sniffing) (แล้วแบบที่ไม่ปลอดภัยละ? Telnet ไงครับ)
SSH จะทำการสร้าง Secure Channel ไปบนเครือข่ายที่แบบ unsecured โดยมีลักษณะการทำงานเป็นแบบ Client-Server ซึ่งก็คือ เครื่องที่เราต้องเข้าไปใช้งานจะเรียกว่า Server หรือ Remote Host โดยจะต้องติดตั้ง SSH-Server ไว้ด้วย ส่วนเครื่องที่เราใช้สำหรับเข้าเพื่อไปใช้งานเครื่อง Server จะเรียกกว่า Client หรือ Local Host และจะต้องลง SSH-Client ไว้ด้วยเช่นกัน
ส่วนใหญ่โปรโตคอล SSH จะมีบนระบบปฎิบัติการแบบ Unix-like เช่น Linux หรือ macOS โดย Microsoft Windows จะเริ่มมีบน Windows 10 Insider Preview (ซึ่งยังเป็นแบบ Beta อยู่ครับ) และปกติจะใช้พอร์ต 22
พื้นฐานคำสั่ง สำหรับ SSH
คำสั่งเหล่านี้ จะใช้สำหรับระบบที่เป็น Unix-like เช่น Linux หรือ macOS นะครับ ซึ่งแน่นอนว่าคำสั่งก็คือ ssh
ssh remote_host
โดยที่ remote_host ในตัวอย่างนี้ คือ IP address หรือ domain name ที่เราจะเชื่อมต่อครับ โดยในคำสั่งนี้ทั้ง SSH- Server และ SSH-Client จะต้องใช้ username เดียวกันครับ
หากใช้คนละ username ก็สามารถมาใช้คำสั่งนี้ได้ครับ โดยให้เราใส่ username ของเครื่องที่เราจะเข้าใช้งาน ที่ remote_username ครับ
ssh remote_username@remote_host
เมื่อเชื่อมต่อกับ Server แล้ว ก็จะต้องใส่ Password เพื่อเข้าใช้งานครับ
หากที่จะต้องการเพิ่มความปลอดภัย ด้วยการใช้ SSH Key แทนการพิมพ์รหัส ให้ลองทำตามบทความนี้ครับ >>
ถ้าต้องการออกก็ใช้คำสั่ง exit ได้เลยครับ
exit
เตรียมความพร้อมก่อนลุย
- Raspberry Pi ในที่นี้ผมจะใช้ Debian Jessie กับ Raspberry Pi 3 นะครับ
- ต่อ Raspberry Pi (SSH-Server) เข้ากับวงเน็ตเวิร์กเดียวกันกับคอมพิวเตอร์ (SSH-Client) ที่เราจะใช้สำหรับ Remote Access เข้าไปที่ Raspberry Pi
หมายเหตุ
- ปกติ Raspberry Pi จะมี SSH-Server มาให้อยู่แล้วครับ
- หากใครปิดไปให้ เปิด SSH ก่อนนะครับ
- หากใครไปลองกับ Ubuntu จะต้องติดตั้ง SSH-Server ก่อนนะครับ ซึ่งก็ทำได้ง่ายๆเพียงพิมพ์คำสั่ง
sudo apt-get install openssh-server
เข้าใช้งานบน Windows
สำหรับผู้ใช้งานระบบปฎิบัติการ Windows จะต้องติดตั้งโปรแกรมเพิ่ม เพื่อให้สามารถใช้งานแบบ Unix-like ได้ครับ ซึ่งก็มีหลากหลาย และ PuTTY ก็คือโปรแกรมยอดนิยม ที่เราจะใช้กันครับ
- ดาวโหลดโปรแกรม PuTTY > http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- เปิดโปรแกรม PuTTY และพิมพ์ค่าดังต่อไปนี้ครับ
- Host Name : ใส่ IP Address ของ Raspberry Pi ไปครับ (ตัวอย่างเช่น 192.168.1.102)
- Port : พิมพ์ 22
- Connection type : เลือก SSH
- หากต้องการบันทึกค่านี้ไว้ (เพื่อใช้ครั้งถัดไป) ให้ตั้งชื่อที่ Saved Sessions แล้วกด Save ครับ
- กด Open เพื่อทำการเชื่อมต่อครับ
- Login name : pi หรือตามที่ได้กำหนดไว้ครับ
- Password : raspberry หรือตามที่ได้กำหนดไว้ครับ
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ…ง่ายนิดเดียว
เข้าใช้งานบน Windows 10
เนื่องจาก Windows 10 มีการเพิ่มฟีเจอร์การใช้งาน Linux Bash (Windows Subsystem for Linux (WSL)) เข้ามาด้วย (คล้ายๆ Cygwin) จึงทำให้เราสามารถใช้ Linux Command ได้แบบ Linux และ macOS เลยครับ…แต่! ยังเป็นแบบ Beta อยู่นะครับ ใครอยากลองก็เชิญได้เลยครับ (แต่ต้องรับความเสี่ยงกันเอาเองนะครับ)
เพื่อใช้งานฟีเจอร์นี้ ขั้นต่ำจะต้องเป็น Windows 10 build 14316 และต้องเปิดใช้งาน Insider Preview build และใช้ได้เฉพาะรุ่น 64 bit เท่านั้นนะครับ
หมายเหตุ : ที่ผมใช้งานอยู่เป็น Windows 10 Pro Insider Preview Build 14379.rs1_release.160627–1607 นะครับ
Check version กันก่อน
มาเช็คเวอร์ชั่นของเราก่อนกับว่าใหม่กว่า build 14316 ไหม?
- ไปที่ Run พิมพ์ winver ที่ช่อง Open:
- หน้าต่าง About Windows ก็จะปรากฎครับ ลองเช็คค่าของเราดูครับ
- หากใครยังไม่ได้อัพเดตเวอร์ชั่น ก็อัพเดตก่อนนะครับ
- หากอัพเดตแล้วยังไม่มา อาจจะต้องรีสตาร์ทดูครับ
เปิดใช้งาน
- ไปที่ Settings เลือกเมนู Update & Security > For Developers > Developer Mode (On)
- ไปที่ Control Panel เลือก Programs > Turn windows features on or off > Windows Subsystem for Linux (Beta)
- เปิด Bash on Ubuntu on Windows โดยพิมพ์ที่ช่อง Search ได้เลยครับ
- ได้มาแล้วครับ หน้าต่าง Terminal
- ลอง SSH ดูเลยครับ โดยพิมพ์คำสั่ง
ssh pi@192.168.1.102
- หากใช้ Username อื่น ให้เปลี่ยน pi เป็น Username นั้นนะครับ
- หาก RPi ของท่านเป็น IP Address อื่นก็ให้ใส่ IP Address นั้นไปเช่นกันครับ
- Password : raspberry หรือตามที่ได้กำหนดไว้ครับ
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ
เข้าใช้งานบน Linux (Ubuntu)
บน Linux ซึ่งในที่นี้ผมจะใช้ Ubuntu 16.04 ครับ
- เปิด Terminal ขึ้นมา
- ลอง SSH ดูเลยครับ โดยพิมพ์คำสั่ง
ssh pi@192.168.1.102
- หากใช้ Username อื่น ให้เปลี่ยน pi เป็น Username นั้นนะครับ
- หาก RPi ของท่านเป็น IP Address อื่นก็ให้ใส่ IP Address นั้นไปเช่นกันครับ
- Password : raspberry หรือตามที่ได้กำหนดไว้ครับ
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ…ง่ายนิดเดียว
ใช้งานบนระบบ macOS
สำหรับ macOS สามารถใช้กับทุกรุ่นครับ โดยผมใช้ OS X Yosemite 10.10.5 ครับ
- เปิด Terminal ขึ้นมา
- ลอง SSH ดูเลยครับ โดยพิมพ์คำสั่ง
ssh pi@192.168.1.102
- หากใช้ Username อื่น ให้เปลี่ยน pi เป็น Username นั้นนะครับ
- หาก RPi ของท่านเป็น IP Address อื่นก็ให้ใส่ IP Address นั้นไปเช่นกันครับ
- Password : ตามที่ท่านได้กำหนดไว้ครับ (ตัวอย่างเช่น raspbian)
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ…ง่ายนิดเดียว
เข้าใช้งานบน iOS
บน iPhone หรือ iPad เราจะต้องติดตั้งแอพพลิเคชั่นก่อนครับ ในที่นี้เราจะใช้ iTerminal ครับ
- ติดตั้งแอพพลิเคชั่น iTerminal และเปิดขึ้นมาครับ
- กรอกข้อมูล
- Host name : 192.168.1.102 (ตาม IP Address ของ RPi นะครับ)
- Port : 22
- Username : pi หรือตามที่ได้กำหนดไว้ครับ
- Password : raspberry หรือตามที่ได้กำหนดไว้ครับ
- เสร็จแล้วกด Connect ได้เลยครับ
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ…ง่ายนิดเดียว
- ทดสอบ keyboard สักหน่อยว่าใช้งานได้จริงไหม๊…ปรากฎว่าได้ปกติครับ !
เข้าใช้งานบน Android
บนโทรศัพท์หรือแท็ปเล็ต Adroid เราจะต้องติดตั้งแอพพลิเคชั่นก่อนเช่นกันกับ iOS ครับ ในที่นี้เราจะใช้ JuiceSSH — SSH Client ครับ
- ติดตั้งแอพพลิเคชั่น JuiceSSH — SSH Client และเปิดขึ้นมาครับ
- สร้าง New Connection โดยกรอกข้อมูล
- Type : SSH
- Address : 192.168.1.102 (ตาม IP Address ของ RPi นะครับ)
- Port : 22
- Identity :
- Username : pi หรือตามที่ได้กำหนดไว้ครับ
- Password : raspberry หรือตามที่ได้กำหนดไว้ครับ
- เสร็จแล้วกด Connect ได้เลยครับ
- เรียบร้อยแล้วครับ
เข้าใช้งานบน Chrome
สำหรับผู้ที่ใช้ Chrome โดยในนี้ผมใช้ Chrome Browser นะครับ ไม่ใช่ Chrome OS (เนื่องจากไม่มี) โดยเราทำการติดตั้ง App ที่ชื่อว่า Secure Shell
- ที่ Chrome web store ให้ค้นหา App ที่ชื่อว่า Secure Shell แล้วติดตั้งโดยการกด +ADD TO CHROME ครับ
- ที่ Chrome App Launcher ให้เราเปิด Secure Shell ขึ้นมา
- สร้าง New Connection โดยกรอกข้อมูล
- โดยสามารถพิมพ์ pi@192.168.1.102 ได้เลยครับ
- หากใช้ Username อื่น ให้เปลี่ยน pi เป็น Username นั้นนะครับ
- หาก RPi ของท่านเป็น IP Address อื่นก็ให้ใส่ IP Address นั้นไปเช่นกันครับ
- เสร็จแล้วกด Connect ได้เลยครับ
- Password : ตามที่ท่านได้กำหนดไว้ครับ (ตัวอย่างเช่น raspbian)
- หากเข้าใช้งานครั้งแรก จะมีคำถามให้ตอบ yes ไปครับ
- เรียบร้อยแล้วครับ
สรุป
- SSH-Server (RPi)
- ต่อ Raspberry Pi (SSH-Server) เข้ากับวงเน็ตเวิร์กเดียวกันกับคอมพิวเตอร์ (SSH-Client)
- ปกติ Raspberry Pi จะลง SSH-Server มาให้อยู่แล้ว และเปิดใช้งานให้อยู่แล้ว
- หากใช้ Linux ตัวอื่น ไม่มี SSH-Server ให้ติดตั้ง SSH-Server ก่อน โดยพิมพ์คำสั่ง
- sudo apt-get install openssh-server
- SSH-Client
- คำสั่งพื้นฐานที่ใช้กับระบบปฎิบัติการแบบ Unix-like (Linux, macOS) ให้ใช้คำสั่ง
- ssh remote_username@remote_host
- บน macOS และ Linux ใช้ Terminal ที่มีอยู่แล้วได้เลยครับ
- บน Windows ใช้โปรแกรม PuTTY
- บน iOS, iPad ใช้ผ่านแอพพลิเคชั่น iTerminal
- บน Android ใช้ผ่านแอพพลิเคชั่น JuiceSSH — SSH Client
- บน Chrome ใช้ผ่านแอพพลิเคชั่น Secure Shell