ฉันสามารถเชื่อมต่อหรือดูเซสชัน ssh ที่ถูกยกเลิกได้หรือไม่


14

ฉันมีอินสแตนซ์เสมือนของ redhat ทำงานที่ฉันสามารถsshจากโฮสต์ใด ๆ ในเครือข่ายขององค์กร sshเซสชั่นของฉันถูกลดลงในขณะที่เรียกใช้สคริปต์บางอย่างที่อาจหรือไม่ทำให้ฉันตัดการเชื่อมต่อ whoคำสั่งในประเทศยังคงแสดงการเชื่อมต่อลดลง เชื่อมต่อใหม่ด้วยsshเริ่มเซสชันใหม่ทั้งหมด มีวิธีการเชื่อมต่อกับเซสชันเดิมหรือไม่? ถ้าฉันไม่ฆ่ามัน? ฉันมีสิทธิ์เข้าถึงรูทและร่างกาย ฉันไม่ได้ใช้หน้าจอในเซสชันดั้งเดิม

คำตอบ:


11

คุณต้องการใช้หน้าจอบนรีโมทจากนั้นเมื่อคุณกลับไปที่คุณเชื่อมต่อกับอินสแตนซ์ของหน้าจอนั้น

แต่ไม่ว่าคุณจะไม่สามารถเชื่อมต่อกับเซสชัน ssh ซ้ำได้คุณต้องใช้หน้าจอ (หรืออย่างอื่นเพื่ออำนวยความสะดวกให้)

ดูคำถามนี้อย่างน้อยหนึ่งตัวเลือกอื่นและความแตกต่างระหว่างมัน (tmux) และหน้าจอ หลังจากอ่านคำตอบสำหรับคำถามนั้น ... ฉันอยากบอกว่าtmuxดีกว่า

โอ้และใช่คุณสามารถkillดำเนินการกระบวนการ (รวมถึงการทุบตีแยก) เพื่อหยุดคุณอาจพยายามskillฆ่าผู้ใช้ด้วยชื่อ แต่ฉันสงสัยว่าผู้ใช้นั้นเป็นรากหรือไม่ ... อาจลองฆ่าสิ่งที่ไม่สามารถทำได้

คำตอบได้รับการปรับปรุงสองสามครั้ง


4

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

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

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

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

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

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


3

ดังกล่าวแล้วหน้าจอน่าจะเป็นทางออกที่ดีที่สุดของคุณ หาก / เมื่อเซสชันของคุณถูกดร็อปมันจะยังคงทำงานต่อไป พิมพ์ 'screen -list' เพื่อดูเซสชันที่มีอยู่และ 'screen -r' พร้อมเซสชันที่คุณต้องการ เคล็ดลับเล็ก ๆ น้อย ๆ คุณสามารถแท็บสตริงเซสชันให้เสร็จสมบูรณ์แทนที่จะคัดลอก / วางสิ่งของทั้งหมด

อย่างไรก็ตามหน้าจออาจน่ารำคาญ ในไคลเอนต์ของฉันคุณไม่สามารถเลื่อนขึ้นเพื่อดูประวัติในคอนโซลได้อย่างง่ายดาย มันทำหน้าที่แตกต่างกันเล็กน้อยกว่าที่คุณคาดหวัง หากสิ่งที่คุณต้องการคือทำให้แน่ใจว่า procs ที่ใช้งานมายาวนานของคุณจะไม่ถูกฆ่าให้ใช้ 'nohup' มันจะป้องกัน proc ของคุณจากการถูกปิดเมื่อคุณสูญเสียการเชื่อมต่อ ตรวจสอบให้แน่ใจว่าคุณส่งเอาต์พุต proc ของคุณไปยังไฟล์หากคุณต้องการตรวจสอบมัน นอกจากนี้หากคุณมีสคริปต์ทุบตีฉันคิดว่าคุณต้องเรียก 'bash' หน้า nohup อย่างชัดเจน ตัวอย่าง...

nohup bash ./myscript.sh> output.log 2> & 1 &

นั่นหมายความว่า nohup เพื่อป้องกันการฆ่า proc ทุบตีเพื่อเรียก bash อย่างชัดเจนหากคุณมีการทุบตีสิ่งเฉพาะในสคริปต์ของคุณสคริปต์ของคุณเรียกว่า 'myscript.sh' ใน dir ปัจจุบัน output.log เป็นไฟล์ที่จะส่งทั้งมาตรฐานและ เกิดข้อผิดพลาดและ '&' ที่ส่วนท้ายเพื่อเรียกใช้ proc ในพื้นหลัง

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