ฉันจะมีเทอร์มินัลหลายเซสชันผ่านการเชื่อมต่อ SSH เดียวได้อย่างไร


21

ฉันมีรุ่นเซิร์ฟเวอร์ Ubuntu ที่ทำงานอยู่และฉันสามารถใช้ SSH เพื่อทำงานต่าง ๆ ได้ สิ่งที่ฉันต้องการคือความสามารถในการ SSH ลงในเซิร์ฟเวอร์ของฉันเริ่มโปรแกรมเซิร์ฟเวอร์แล้วสลับไปยังเซสชัน "เสมือน" อีกครั้ง (ด้วยในอินสแตนซ์ SSH เดียวกัน) และเรียกใช้การเรียกไคลเอ็นต์กับบริการ เมื่อฉันเริ่มให้บริการเป็นการปิดกั้นการโทรดังนั้นฉันจึงไม่สามารถเรียกใช้การโทรจากไคลเอ็นต์โดยไม่ต้องเริ่มเซสชัน SSH อับละอองเกสร

ฉันหวังว่าอาจมีวิธีที่ไม่มั่นคงในลักษณะเดียวกับที่ UI ทำกับเดสก์ท็อปเสมือน

คำตอบ:


24

สิ่งที่คุณต้องการใช้คือหน้าจอหรือดีกว่า wrapper ที่ใช้งานง่ายรอบหน้าจอที่เรียกว่า byobu

หน้าจอช่วยให้คุณสามารถรันเซสชันเทอร์มินัลเสมือนหลายเซสชันในเซสชัน ssh เดียวกัน กวดวิชาและความช่วยเหลือหน้ามีอยู่

byobuเป็น wrapper ที่ช่วยให้สามารถเปิดหน้าจอใหม่ได้อย่างง่ายดายด้วยฟังก์ชั่นคีย์อย่างง่ายแทนการใช้คีย์ผสมจาก ctrl-a นอกจากนี้ยังแสดงบรรทัดสถานะพร้อมเทอร์มินัลเสมือนที่เปิดซึ่งสามารถตั้งชื่อได้

อีกคุณสมบัติที่ดีคือความจริงที่ว่าหน้าจอทั้งหมดของคุณสามารถอยู่ได้ในขณะที่การเชื่อมต่อ ssh ของคุณถูกตัดการเชื่อมต่อ คุณเพียงแค่เชื่อมต่ออีกครั้งผ่าน ssh และโทรหา byobu และทุกอย่างเป็นเหมือนก่อนหน้านี้

ในที่สุดภาพหน้าจอของ byobu


5

หน้าจอ GNUเป็นคำตอบที่คุณมองหา - แต่มันก็เหมือนกับ Vi คุณได้เรียนรู้คำสั่งมากมายเพื่อตั้งค่าสภาพแวดล้อมหน้าจอที่ประสบความสำเร็จ นี่คือสิ่งที่จะให้คุณเริ่มต้น ก่อนอื่นคุณจะต้องมี.screenrc http://paste.ubuntu.com/473764/บันทึกไว้ในเซิร์ฟเวอร์ระยะไกลในโฟลเดอร์บ้านของผู้ใช้ของคุณ หน้าจอติดตั้งถัดไปบนเครื่องระยะไกล ( sudo apt-get install screen) ถัดไปคุณจะต้องยิงมันขึ้นที่นี่คือคำสั่งบางอย่างสำหรับ "หน้าจอยิง"

screen- อันนี้ค่อนข้างเรียบง่าย มันเริ่มเซสชันหน้าจอใหม่ screen -ls- แสดงรายการเซสชันหน้าจอที่ใช้งานอยู่ทั้งหมด ใช่คุณสามารถมีเทอร์มินัลหลายเครื่องภายในหลายหน้าจอ หวาน.

ตัวอย่าง

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> - การดำเนินการนี้จะดำเนินการต่อในเซสชันหน้าจอเดี่ยว IE: screen -x 16467

เมื่อคุณอยู่ในหน้าจอ (และคุณใช้.screenrcไฟล์ตัวอย่างของฉัน) คุณจะเห็นสิ่งต่อไปนี้ที่ด้านล่าง:

(LOAD) 0$* bash

เซิร์ฟเวอร์ใดที่จะโหลดและรายการ "เทอร์มินัลแท็บ" ที่เปิดอยู่ทั้งหมด ขณะนี้มีเพียงหน้าต่างเดียว ประเภทบางสิ่งบางอย่างจากนั้นกดปุ่มนี้รวมสำคัญ: การเปิดตัวจากนั้นกดCtrl + A เป็นลำดับหนี คำสั่งทั้งหมดเริ่มต้นด้วยชุดค่าผสมนี้ กำลังสร้างแท็บใหม่ คุณจะสังเกตเห็นว่าส่วนท้ายมีสิ่งที่แสดงให้เห็นว่ามีแท็บอื่นเปิดอยู่และแท็บที่ใช้งานอยู่คือหมายเลข 1 คุณสามารถเปิดได้สูงสุด 60 แท็บต่อเซสชันหน้าจอcCtrl + Ac(LOAD) 0-$ bash 1$* bash

หากคุณต้องการที่จะออกจากหน้าจอ แต่ให้มันใช้งานได้Ctrl + Aแล้วdซึ่งจะแยกเซสชั่นของคุณ ในที่สุดคุณสามารถปิดแท็บโดยใช้Ctrl + Aแล้วkซึ่งจะฆ่าแท็บนั้น (ถ้าล็อค) แต่โดยทั่วไปคุณสามารถพิมพ์exitราวกับว่าคุณอยู่ใน terminal และมันจะปิดแท็บนั้น

สุดท้ายที่จะแสดงรายการหน้าต่างทั้งหมดเปิดคุณสามารถพิมพ์แล้วCtrl + A"

มีตัวเลือกฆ่ามากมายสำหรับหน้าจอที่คุณควรเททับไฟล์ man เพื่อเพิ่มเติม มีข้อเสียอยู่บ้าง คุณไม่สามารถใช้แถบเลื่อนในหน้าจอคุณต้องใช้การควบคุมบัฟเฟอร์เพื่อย้อนกลับอย่างไรก็ตามข้างต้นก็เพียงพอที่จะให้คุณเริ่มต้นดูว่านี่เป็นตัวเลือกที่ทำงานได้หรือไม่ สิ่งที่ยอดเยี่ยมเกี่ยวกับสิ่งนี้และบางสิ่งที่ฉันได้ทำกับผู้ดูแลระบบจำนวนมาก - การเชื่อมต่อเครือข่าย หากเครือข่ายของคุณเลิกการทำงานของคุณจะไม่สูญหาย! เนื่องจากหน้าจอกำลังทำงานบนเซิร์ฟเวอร์ คุณก็ต้องกลับเข้าสู่ระบบผ่านทาง SSH แล้วscreen -lsและscreen -xกลับเข้ามาในเซสชั่นของคุณ


ดูเหมือนว่า txwikinger จะตีฉันด้วยลิงก์ที่มีประโยชน์บางอย่าง!
Marco Ceppi

พิมพ์Ctrl + Aจากนั้น?ไปที่หน้าช่วยเหลือ คำสั่งและทางลัดทั้งหมดจะแสดงรายการไว้ที่นั่น พิมพ์Ctrl + Aแล้ว:เพื่อใช้คำสั่งใด ๆ ตามชื่อถ้าจำชื่อ แต่ลืมปุ่มลัด
ด่าน

1

หากคุณใช้ Ubuntu Server Edition byobuเป็นตัวเลือกที่ดีที่สุดของคุณ เซิร์ฟเวอร์คู่มืออูบุนตูมีเอกสารที่มีประโยชน์บาง

โดยทั่วไปแล้วจะเรียนรู้และใช้งานได้ง่ายกว่าscreenและติดตั้งตามค่าเริ่มต้น


0

ฉันใช้ Emacs ดังนั้นการกำหนดค่าเริ่มต้นของหน้าจอทำให้ชีวิตของฉันลำบาก

$ cat /home/cjac/.screenrc 

หลบหนี ^ \

ลองดูสิ!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.