DEV Community

Phongphan Phienphanich
Phongphan Phienphanich

Posted on

แชร์ SSH Session ข้ามเครือข่าย

ประเดิม dev.to ด้วยเรื่องนี้ก่อนเลย

ที่มา - ข้ามไปได้

มี Pain Point หนึ่งเมื่อต้อง Support ลูกค้าจำนวนมากๆ โดยต้อง SSH เข้าไปยัง Server ปลายทาง ที่ลูกค้าไม่อยากให้เราเข้าถึง IP ตรงๆ และรู้ Username/Password (ผมก็ไม่อยากรู้ให้เดือดร้อนในภายหลัง)

วิธีที่คิดออกไวๆ คือ Anydesk (หรือ Team Viewer) เข้าไปยังเครื่องของลูกค้า ที่ลูกค้า SSH ต่อไปยัง Server ปลายทางให้เรียบร้อย มันก็ดี แต่มีปัญหาเรื่อง Bandwidth ที่ใช้พอตัวอยู่ แถมขนาดหน้าจอก็เล็กอีกต่างหาก หาวิธีตั้งนานจนในที่สุดได้พบเจอกับ Tmate

ความดีงามคือ ลงง่าย ใช้ง่าย (ยิ่งใช้ Tmux มาอยู่แล้วยิ่งง่าย) ไม่กี่คำสั่ง และการ Copy URL ให้ปลายทาง ก็เป็นอันเรียบร้อย

Tmate

Tmate เป็น Opensource ตัวหนึ่งพัฒนาต่อมาจาก Tmux เพื่อให้สามารถแชร์ Session ข้ามเครือข่ายได้ (HTTP, SSH) โดยอาศัย Server ตัวกลางอีกทอดหนึ่ง (ตอนนี้ยังฟรี) มีบนหลาย OS มากๆ ยกเว้น Windows วิธีการติดตั้งก็จะคล้ายกับการติดตั้ง Software ทั่วไป (มีบน repo official ของหลาย OS แล้ว) เช่น

ใน Ubuntu

apt-get update && apt-get install -y tmate

หรือใน MacOS ก็ลงผ่าน Home Brew ได้เลย

brew install tmate

(ควรอัพเดจเป็น version 2.4 ขึ้นไปเพื่อ feature ที่มากขึ้น แต่อาจจะต้อง compile เอง)

วิธีใช้

สั่งผ่านคำสั่ง tmate บน Terminal Session ของ User ที่ต้องการ

CMD

จะปรากฏ information สำหรับการเชื่อมต่อ มีทั้งการเชื่อมต่อแบบ Read-only และการเชื่อมต่อแบบที่ผู้เข้าร่วมสามารถพิมพ์ Command ได้ด้วย ก็ Copy information นี้ส่งให้คนที่อยากเข้าร่วมครับ เมื่อพร้อมก็กด q หรือ Ctrl + c เพื่อออกจากหน้านี้แล้วเริ่ม Session ครับ
Connection

Session ID จะถูก Random ใหม่ทุกครั้ง และมีการเข้าร่วม 2 รูปแบบคือแบบ SSH และแบบ HTTP

Alt Text

หากดูข้อความไม่ทันสามารถใช้คำสั่ง tmux show-message เพื่อขอดู information การ connect อีกครั้งครับ

Alt Text

ข้อควรระวัง

  1. การ Detach (Ctrl + b, d) แบบ tmux ทำให้ออกจาก tmate ได้แต่ Session จะไม่ตัด และจะไม่สามารถ Attach กลับมาได้ (พยายามลองแล้วไม่มี) หากไม่สามารถกลับเข้าไปได้แล้วอยากจะปิด session ก็ลอง kill จาก pid โดยใช้คำสั่ง ps aux | grep tmate
  2. จะหยุด Session ได้ก็ต่อเมื่อ exit จนหมด ทุกคนที่เชื่อมต่ออยู่ก็จะหลุดทุกคนอัตโนมัติ แต่อย่าลืม

Discussion (0)