ค้นหาเว็บไซต์

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 ได้อย่างไร? แบ่งปันความคิดของคุณกับเราผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง