เทคนิคการใช้งานคำสั่ง screen บน Linux

ในกรณีที่อยู่ภายนอกระบบเครือข่ายมหาวิทยาลัย การจะเข้าถึง Linux Server ของตนเองนั้น อาจจะทำได้โดย

  1. VPN เข้ามา แล้ว จึงใช้ SSH Client ต่างๆ เพื่อเข้าถึง
  2. SSH มายัง Server ที่ เปิดให้ Secure Shell ได้จากภายนอก แล้วจึง ssh จากเครื่องดังกล่าว ไปยัง Server ที่ต้องการ

ปัญหาคือ การใช้งาน VPN ทำให้ ได้ IP เป็น Private ภายในมหาวิทยาลัย อาจจะไม่สะดวกในบางประการ ครั้นจะต้อง ssh ไปยังเครื่องที่เปิดให้ แล้วค่อยไปต่อก็ไม่สะดวกนัก เพราะ ถ้าต้องทำงานกับหลายๆเครื่อง ก็ต้อง ssh กันหลายรอบ

บทความนี้ ขอยกตัวอย่างว่า มีเครื่อง xxx.psu.ac.th เปิดให้ ssh จากภายนอกเข้ามาได้ และมีเครื่อง aaa.psu.ac.th, bbb.psu.ac.th, ccc.psu.ac.th และ ddd.psu.ac.th เป็นเครื่องที่ต้องการจะเข้าไปจัดการ ด้วย SSH Client และสมมุติให้เครื่องต่างๆ เปิด Firewall ให้ xxx.psu.ac.th สามารถ ssh ไปได้

วิธีการหนึ่งที่สะดวกกว่าการ ssh หลายๆรอบ คือ การใช้คำสั่ง screen

ขั้นตอนคือ

  1. ssh ไปยังเครื่อง xxx.psu.ac.th
  2. ใช้คำสั่ง screen
  3. จากนี้ไป เป็นการติดต่อไปยัง Server ต่างๆ …
  4. ที่ Shell ของ screen บนเครื่อง xxx.psu.ac.th ใช้คำสั่ง ssh username@aaa.psu.ac.th ก็จะได้เข้าถึง aaa.psu.ac.th ได้
  5. เมื่อต้องการ ติดต่อไปยัง bbb.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@bbb.psu.ac.th
  6. เมื่อต้องการ ติดต่อไปยัง ccc.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@ccc.psu.ac.th
  7. เมื่อต้องการ ติดต่อไปยัง ddd.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@ddd.psu.ac.th
  8. ต่อไป หากต้องการดูว่า มีการเชื่อมต่อไปยัง Server ใดไว้บ้าง ใช้คำสั่ง Ctrl + a แล้ว กด ” (Double Quote) ก็จะแสดง รายการของ Server ที่ติดต่อไป โดยนำหน้าด้วย ตัวเลข เริ่มจาก 0, 1, 2 และตามด้วยชื่อ โดยเริ่มต้น จะเป็นชื่อ Shell เช่น bash ทำให้จำได้ยาก แต่สามารถ ใช้ปุ่ม ลูกศร บนคีย์บอร์ด เพื่อเลื่อนขึ้นลงได้ ให้ เลื่อนไปที่อันแรก แล้วกด Enter (ซึ่งก็คือเครื่อง aaa.psu.ac.th)
  9. ต่อไป เราสามารถตั้งชื่อได้ โดยใช้คำสั่ง Ctrl + a แล้วกดตัว A (A ตัวพิมพ์ใหญ่) แล้วตั้งชื่อ เป็น aaa.psu.ac.th แล้วกด Enter จากนั้น ลอง ทำข้อ 8 ใหม่ จะพบว่า สามารถตั้งชื่อได้แล้ว ซึ่งจะง่ายขึ้น ในการสลับหน้าจอ
  10. จากนั้น ทำข้อ 8 เพื่อ สลับไปยัง bbb, ccc, ddd เพื่อตั้งชื่อ
  11. ถ้าต้องการสลับไปตามลำดับ ใช้คำสั่ง Ctrl + a แล้วกดตัว n (n ตัวพิมพ์เล็ก) จะสลับไปเรื่อยๆตามลำดับ
  12. ถ้าต้องการสลับไปยังหน้าจอ ลำดับไกลๆ เช่น เปิดไว้ 8 ตัว ก็กดคำสั่ง Ctrl + a แล้วกด ‘ (Single Quote) ตามด้วย ตัวเลขลำดับของหน้าจอ
  13. เมื่อต้องการ กลับมายัง xxx.psu.ac.th ก็แค่กด Ctrl + a แล้วกดปุ่ม d (d ตัวพิมพ์เล็ก),  จากนี้ หากต้องการหยุดการทำงานแล้ว ก็สามารถ exit ออกไปได้เลย โดยที่ เครื่อง xxx ยังติดต่อกับเครื่อง aaa, bbb, ccc, ddd ไว้เหมือนเดืม
  14. แต่เมื่อต้องการ กลับไปใช้ screen ใหม่ ลองใช้คำสั่ง screen -ls เพื่อเรียกดู Session
  15. และใช้คำสั่ง screen -r เพื่อ กลับไปยัง screen ที่ทำงานค้างอยู่ได้

วิธีการนี้ ทำให้ งานไม่สะดุด เพราะสิ่งที่ run ค้างไว้ ยังคงทำงานต่อไป และสามารถกลับมาทำงานเมื่อไหร่ก็ได้ แถม คนที่ใช้ Shell ผ่านทาง SmartPhone, Tablet ที่ต้องพิมพ์ Password ยากๆ ก็แค่พยายาม ssh ไปยังเครื่อง xxx ครั้งเดียว หลังจากนั้น ก็สามารถ สลับหน้าจอไปมา โดยไม่ต้องพิมพ์ Password ยากๆเหล่านั้นอีกครับ 😉

ลองดูครับ