GoTTY - แบ่งปัน Linux Terminal (TTY) ของคุณเป็นเว็บแอปพลิเคชัน
GoTTY เป็นเครื่องมือบรรทัดคำสั่งง่ายๆ ที่ใช้ GoLang ซึ่งช่วยให้คุณสามารถแบ่งปันเทอร์มินัล (TTY) ของคุณเป็นเว็บแอปพลิเคชันได้ มันเปลี่ยนเครื่องมือบรรทัดคำสั่งให้เป็นเว็บแอปพลิเคชัน
ใช้โปรแกรมจำลองเทอร์มินัลของ Chrome OS (hterm) เพื่อเรียกใช้งานเทอร์มินัลที่ใช้ JavaScript บนเว็บเบราว์เซอร์ และที่สำคัญ GoTTY รันเว็บเซิร์ฟเวอร์ซ็อกเก็ตที่ถ่ายโอนเอาต์พุตจาก TTY ไปยังไคลเอนต์โดยทั่วไป และรับอินพุตจากไคลเอนต์ (นั่นคือถ้าอนุญาตให้อินพุตจากไคลเอนต์) และส่งต่อ ไปที่ TTY
อ่านเพิ่มเติม: เทเลคอนโซล – แบ่งปันเทอร์มินัล Linux ของคุณกับเพื่อน ๆ
สถาปัตยกรรม (แนวคิด hterm + เว็บซ็อกเก็ต) ได้รับแรงบันดาลใจจาก โปรแกรม Wetty ซึ่งเปิดใช้งานเทอร์มินัลผ่าน HTTP และ HTTPS
ข้อกำหนดเบื้องต้น:
คุณควรติดตั้งสภาพแวดล้อม GoLang (Go Programming Language) ใน Linux เพื่อรัน GoTTY
วิธีการติดตั้ง GoTTY ในระบบ Linux
หากคุณมีสภาพแวดล้อม GoLang ที่ใช้งานได้อยู่แล้ว ให้เรียกใช้คำสั่ง go get ด้านล่างเพื่อติดตั้ง:
go get github.com/yudai/gotty
คำสั่งด้านบนจะติดตั้งไบนารี GoTTY ในตัวแปรสภาพแวดล้อม GOBIN ของคุณ ลองตรวจสอบว่าเป็นกรณีนี้หรือไม่:
ls $GOPATH/bin/
วิธีใช้ GoTTY ใน Linux
หากต้องการเรียกใช้ คุณสามารถใช้ตัวแปร GOBIN env และคำสั่งคุณลักษณะการเติมข้อความอัตโนมัติดังนี้:
$GOBIN/gotty
มิฉะนั้น ให้รัน GoTTY หรือโปรแกรม Go อื่นๆ โดยไม่ต้องพิมพ์เส้นทางแบบเต็มไปยังไบนารี เพิ่มตัวแปร GOBIN ของคุณไปที่ PATH ในไฟล์ ~/.profile
โดยใช้คำสั่ง export ด้านล่าง : :
export PATH="$PATH:$GOBIN"
บันทึกไฟล์และปิด จากนั้นให้แหล่งที่มาของไฟล์เพื่อให้มีผลกับการเปลี่ยนแปลงข้างต้น:
source ~/.profile
ไวยากรณ์ทั่วไปสำหรับการรันคำสั่ง GoTTY คือ:
Usage: gotty [options] <Linux command here> [<arguments...>]
ตอนนี้รัน GoTTY ด้วยคำสั่งใดๆ เช่น คำสั่ง df เพื่อดูพื้นที่พาร์ติชันดิสก์ระบบและการใช้งานจากเว็บเบราว์เซอร์:
gotty df -h
GoTTY จะเริ่มเว็บเซิร์ฟเวอร์ที่พอร์ต 8080 ตามค่าเริ่มต้น จากนั้นเปิด URL: http://127.0.0.1:8080/
บนเว็บเบราว์เซอร์ของคุณ และคุณจะเห็นคำสั่งที่กำลังรันอยู่ราวกับว่าคำสั่งนั้นทำงานบนเทอร์มินัลของคุณ:
วิธีปรับแต่ง GoTTY ใน Linux
คุณสามารถเปลี่ยนตัวเลือกเริ่มต้นและเทอร์มินัลของคุณ (hterm) ในไฟล์โปรไฟล์ ~/.gotty
โดยจะโหลดไฟล์นี้ตามค่าเริ่มต้นในกรณีที่มีอยู่
นี่คือไฟล์การปรับแต่งหลักที่อ่านโดยคำสั่ง gotty ดังนั้น ให้สร้างมันขึ้นมาดังนี้:
touch ~/.gotty
และตั้งค่าที่ถูกต้องของคุณเองสำหรับตัวเลือกการกำหนดค่า (ค้นหาตัวเลือกการกำหนดค่าทั้งหมดที่นี่) เพื่อปรับแต่ง GoTTY เช่น:
// Listen at port 9000 by default
port = "9000"
// Enable TSL/SSL by default
enable_tls = true
// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
font_size = 5,
background_color = "rgb(16, 16, 32)"
}
คุณสามารถตั้งค่าไฟล์ index.html ของคุณเองได้โดยใช้ตัวเลือก --index
จากบรรทัดคำสั่ง:
gotty --index /path/to/index.html uptime
วิธีใช้คุณสมบัติความปลอดภัยใน GoTTY
เนื่องจาก GoTTY ไม่มีการรักษาความปลอดภัยที่เชื่อถือได้เป็นค่าเริ่มต้น คุณจึงจำเป็นต้องใช้คุณลักษณะความปลอดภัยบางอย่างด้วยตนเองตามที่อธิบายไว้ด้านล่าง
อนุญาตให้ไคลเอนต์เรียกใช้คำสั่ง/พิมพ์อินพุตในเทอร์มินัล
โปรดทราบว่าตามค่าเริ่มต้น GoTTY ไม่อนุญาตให้ไคลเอนต์พิมพ์อินพุตลงใน TTY แต่จะเปิดใช้งานการปรับขนาดหน้าต่างเท่านั้น
อย่างไรก็ตาม คุณสามารถใช้ตัวเลือก -w
หรือ --permit-write
เพื่ออนุญาตให้ไคลเอ็นต์เขียนไปยัง TTY ซึ่งไม่แนะนำเนื่องจากภัยคุกคามด้านความปลอดภัยต่อเซิร์ฟเวอร์
คำสั่งต่อไปนี้จะใช้โปรแกรมแก้ไขบรรทัดคำสั่ง vi เพื่อเปิดไฟล์ fossmint.txt เพื่อแก้ไขในเว็บเบราว์เซอร์:
gotty -w vi fossmint.txt
ด้านล่างนี้คืออินเทอร์เฟซ vi ที่เห็นจากเว็บเบราว์เซอร์ (ใช้คำสั่ง vi ที่นี่ตามปกติ):
ใช้ GoTTY พร้อมการตรวจสอบสิทธิ์พื้นฐาน (ชื่อผู้ใช้และรหัสผ่าน)
ลองเปิดใช้งานกลไกการตรวจสอบสิทธิ์ขั้นพื้นฐาน โดยที่ลูกค้าจะต้องป้อนชื่อผู้ใช้และรหัสผ่านที่ระบุเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ GoTTY
คำสั่งด้านล่างจะจำกัดการเข้าถึงไคลเอ็นต์โดยใช้ตัวเลือก -c
เพื่อขอข้อมูลรับรองที่ระบุจากผู้ใช้ (ชื่อผู้ใช้: ทดสอบ และรหัสผ่าน: @67890):
gotty -w -p "9000" -c "test:@67890" glances
Gotty สร้าง URL แบบสุ่ม
อีกวิธีในการจำกัดการเข้าถึงเซิร์ฟเวอร์คือการใช้ตัวเลือก -r
ที่นี่ GoTTY จะสร้าง URL แบบสุ่มเพื่อให้เฉพาะผู้ใช้ที่ทราบ URL เท่านั้นที่สามารถเข้าถึงเซิร์ฟเวอร์ได้
นอกจากนี้ ใช้ตัวเลือก –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” เพื่อกำหนดชื่ออินเทอร์เฟซของเว็บเบราว์เซอร์และคำสั่งเหลือบใช้เพื่อแสดงสถิติการตรวจสอบระบบ : :
gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
ต่อไปนี้เป็นผลจากคำสั่งด้านบนที่เห็นจากอินเทอร์เฟซของเว็บเบราว์เซอร์:
ใช้ GoTTY กับ SSL/TLS
เนื่องจากตามค่าเริ่มต้น การเชื่อมต่อทั้งหมดระหว่างเซิร์ฟเวอร์และไคลเอนต์จะไม่ถูกเข้ารหัส เมื่อคุณส่งข้อมูลลับผ่าน GoTTY เช่น ข้อมูลรับรองผู้ใช้หรือข้อมูลอื่น ๆ คุณต้องใช้ -t
หรือ - -tls
ตัวเลือกที่เปิดใช้งาน TLS/SSL ในเซสชัน:
ตามค่าเริ่มต้น GoTTY จะอ่านไฟล์ใบรับรอง ~/.gotty.crt
และไฟล์คีย์ ~/.gotty.key
ดังนั้นให้เริ่มต้นด้วยการสร้างใบรับรองที่ลงนามด้วยตนเองเช่นกัน เป็นไฟล์คีย์โดยใช้คำสั่ง openssl ด้านล่าง (ตอบคำถามที่ถามเพื่อสร้างใบรับรองและไฟล์คีย์):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt
จากนั้นใช้ GoTTY อย่างปลอดภัยโดยเปิดใช้งาน SSL/TLS ดังนี้:
gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
แบ่งปัน Terminal ของคุณกับลูกค้าหลายราย
คุณสามารถใช้เทอร์มินัลมัลติเพล็กเซอร์เพื่อแชร์กระบวนการเดียวกับไคลเอนต์หลายตัวได้ คำสั่งต่อไปนี้จะเริ่มเซสชัน tmux ใหม่ชื่อ gotty พร้อมคำสั่งเหลือบมอง (ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง tmux แล้ว):
gotty tmux new -A -s gotty glances
หากต้องการอ่านไฟล์กำหนดค่าอื่น ให้ใช้ตัวเลือก –config “/path/to/file” ดังนี้:
gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
หากต้องการแสดงเวอร์ชัน GoTTY ให้รันคำสั่ง:
gotty -v
เยี่ยมชมพื้นที่เก็บข้อมูล GoTTY GitHub เพื่อค้นหาตัวอย่างการใช้งานเพิ่มเติม: https://github.com/yudai/gotty
นั่นคือทั้งหมด! คุณลองแล้วหรือยัง? คุณรู้จัก GoTTY ได้อย่างไร? แบ่งปันความคิดของคุณกับเราผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง