ให้การเชื่อมต่อ ssh ยังมีชีวิตอยู่และคงอยู่ในขณะที่สลับการเชื่อมต่อเครือข่าย


13

สถานการณ์:

  1. ที่โต๊ะทำงานของฉันพร้อมกับแลปท็อปเชื่อมต่อกับอีเธอร์เน็ตและเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน SSH
  2. ต้องการย้ายไปที่ด้านอื่น ๆ ของสำนักงานด้วยแล็ปท็อปและเปลี่ยนเป็น WiFi โดยไม่ขัดจังหวะการเชื่อมต่อ SSH

ฉันลองแล้ว: กำลังเชื่อมต่อกับ WiFi ก่อนจากนั้นยกเลิกการเชื่อมต่ออีเธอร์เน็ต และตัดการเชื่อมต่ออีเธอร์เน็ตก่อนจากนั้นเชื่อมต่อกับ WiFi ทั้งวิธีการทำงาน ยังพยายามเมื่อใช้เซิร์ฟเวอร์ Ubuntu และ OS X พร้อมทั้งตัวเลือกระบบปฏิบัติการทั้งสำหรับลูกค้า ไม่มีโชค.

ดูเหมือนว่าฉันต้องการวิธีที่จะบอกการเชื่อมต่อ SSH ของฉันว่าควรเริ่มใช้อินเทอร์เฟซเครือข่ายที่เชื่อมต่อใหม่แทนอินเทอร์เฟซเก่าที่ถูกตัดการเชื่อมต่อ ความคิดใด ๆ

ฉันรู้ว่าฉันสามารถอยู่บน WiFi ได้ทั้งวัน แต่ฉันไม่ต้องการทำเช่นนั้น ฉันยังตระหนักว่าฉันสามารถทำงานได้จากภายในเซสชันหน้าจอบนเซิร์ฟเวอร์ระยะไกลจากนั้นเชื่อมต่อกับเซสชันหน้าจอนั้นอีกครั้งหลังจากเปลี่ยนอินเตอร์เฟส แต่ฉันไม่ต้องการทำเช่นนั้น ตัวอย่างเช่นฉันอาจกำลังไพพ์คำสั่งขนาดใหญ่เช่นดัมพ์ฐานข้อมูลผ่าน SSH หรือฉันอาจมีไฟล์ที่เปิดผ่าน SSHFS หรือฉันอาจต้องการหลีกเลี่ยงความยุ่งยากในการเชื่อมต่ออีกครั้ง


3
หากคุณได้รับที่อยู่ IP เดียวกันทั้งสองวิธีนี่ก็น่าจะใช้ได้ ถ้าไม่มันเป็นไปไม่ได้สวยมาก
Alan Curry

@AlanCurry หากทั้งไคลเอนต์และเซิร์ฟเวอร์รองรับ MPTCP แสดงว่าเป็นไปได้ แต่การสนับสนุน MPTCP ยังคงมี จำกัด มากดังนั้นจึงไม่น่าเป็นไปได้
kasperd

คำตอบ:


4

ฉันสงสัยว่าโซลูชันนี้จะไม่ทำงานกับ SSHFS ฯลฯ แต่คุณสามารถดูMoshซึ่งให้การสนับสนุนการโรมมิ่งอย่างน้อยเชลล์เอง


ดูเหมือนว่าจะเป็นโซลูชันที่ดีมาก แต่น่าเสียดายที่ต้องมีการติดตั้งบนเซิร์ฟเวอร์ด้วยซึ่งไม่สามารถทำได้เนื่องจากการอนุญาต
user000001

4

ฉันเกรงว่าคุณจะทำสิ่งนี้ไม่ได้ตามคำจำกัดความ เซสชั่น SSH ทำงานผ่านการเชื่อมต่อ TCP ซึ่งกำหนดโดยสี่ tuple (ที่อยู่ต้นทาง, พอร์ตต้นทาง, ที่อยู่ปลายทาง, พอร์ตปลายทาง) คุณไม่สามารถเปลี่ยนการเชื่อมต่อที่มีอยู่ไปยังที่อยู่อื่นบนไคลเอนต์ (นอกเหนือจากความจริงที่ว่าระบบปฏิบัติการจะฉีกการเชื่อมต่อเมื่ออินเทอร์เฟซลง)

NAT อาจทำให้รูปภาพนี้ซับซ้อน แต่ไม่ได้ช่วยอะไรคุณ


ใช่ แต่แอปพลิเคชันสามารถเชื่อมต่อใหม่ได้เมื่อรู้ว่าซ็อกเก็ตปิดแล้ว โปรโตคอล SSH มีข้อกำหนดเพื่อให้เซสชันเก่าทำงานต่อหรือไม่
Ajay Brahmakshatriya

@AjayBrahmakshatriya SSH ไม่มีเครื่องมือในการดำเนินการต่อเซสชัน
Ferrybig

2

ด้ายเก่าฉันรู้ แต่เพื่อความสมบูรณ์เพราะฉันกำลังมองหาสิ่งเดียวกัน ...

ใน Windows 7 หรือใหม่กว่าคุณควรเลือกได้ทั้งอะแดปเตอร์ไร้สายและอะแดปเตอร์อีเธอร์เน็ตแล้วเลือก "การเชื่อมต่อสะพาน" นี่จะให้ที่อยู่ IP เดียวสำหรับคุณทั้งคู่และตอนนี้คุณจะสามารถยกเลิกการเชื่อมต่อและเชื่อมต่ออีเธอร์เน็ตอีกครั้งได้ตามต้องการ


เป็นความคิดที่ดีฉันจะต้องลองสิ่งนี้
Doug

หากทำสิ่งนี้ไม่สามารถเชื่อมต่อทั้งสองเครือข่ายได้ทันทีขึ้นอยู่กับการตั้งค่ามันจะเตะทุกคนในพื้นที่เครือข่าย (ที่มา: สิ่งนี้เกิดขึ้นกับฉัน)
Ferrybig

2

ฉันจัดการสิ่งนี้ด้วยสองวิธี:

เริ่มเซสชันจากเทอร์มินัลเซิร์ฟเวอร์ในดาต้าเซ็นเตอร์ของคุณ (RDP / Windows / ฯลฯ )

หรือ

ติดตั้ง GNU หรือและเริ่มต้นหลังจากเข้าสู่ระบบ

ฉันชอบtmuxเพราะscreenเป็นโรงเรียนที่ค่อนข้างเก่า แต่ถ้าคุณได้รับอนุญาตให้ติดตั้งแพคเกจที่รองรับscreenอยู่ใน repo RHEL

หรือ

ทำทั้งสองอย่าง


tmuxมันมีประโยชน์จริงๆ การใช้สิ่งที่อยู่ในระยะไกลtmuxเป็นนิสัยที่ยอดเยี่ยม
ลูกไก่

ใช่ฉันเห็นด้วย. ฟังก์ชั่นหลายหน้าต่างนั้นยอดเยี่ยม
Doug

1

ไม่สามารถทำได้อย่างง่ายดาย

ฉันสามารถชี้ให้คุณเห็นแอปพลิเคชันราคาแพงจำนวนมากที่อนุญาตให้คุณเก็บเซสชัน telnet หรือ SSH เมื่อย้ายระหว่าง IP หรือ AP หรือแม้กระทั่งช่วงระยะเวลาที่เครือข่ายขาดการเชื่อมต่อ แต่โดยทั่วไปแล้วพวกเขาประสบความสำเร็จโดยสร้างเซิร์ฟเวอร์เปิดเสมอ - เซสชันด้านข้างสำหรับเครื่องไคลเอนต์เพื่อให้เซิร์ฟเวอร์ไม่ทราบว่าการเชื่อมต่อที่แตกต่างกันหรือลดลง

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

แม้ว่าฉันจะสะดุดบนหน้าจอซึ่งอ้างว่าสร้างเซสชัน SSH แบบถาวรซึ่งอาจใช้งานได้จริง ... ลองดูสิ


1

ปัญหาอาจเกิดจากที่อยู่ IP ต้นทางของคุณเปลี่ยนไปเมื่อคุณสลับระหว่างสายเคเบิลและสายเคเบิล สิ่งนี้จะป้องกันเซสชัน ssh กลับมา

ฉันจัดการสิ่งนี้ใน linux โดยเชื่อมต่อผ่าน vpn และตรวจสอบให้แน่ใจว่าการเชื่อมต่อ vpn ให้ IP เดียวกันกับบัญชีของคุณเสมอ (ไม่ยากในการบังคับใช้ แต่โอกาสสูงที่คุณจะได้รับ ip เดียวกันผ่าน vpn แล้วโดยค่าเริ่มต้น ใช้ได้ แต่บังคับให้ดีกว่าเพื่อให้แน่ใจ) ฉันใช้ vtun เป็นส่วนใหญ่ แต่ openvpn ก็ใช้ได้เช่นกัน ตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณผ่าน vpn (การกำหนดเส้นทางที่ถูกต้องผลักดันส่วนนำหน้า, ... )

ฉันสามารถออฟไลน์จากสายเคเบิลได้นานถึง 5 นาทีแล้วเชื่อมต่อกับ wifi และยังคงสามารถเชื่อมต่อกับทุกเซสชันของฉันได้ ping อย่างต่อเนื่อง, mtr, htop, ... เพียงแค่ดำเนินการต่อเมื่อ vpn ได้รับการกู้คืนราวกับว่าไม่มีอะไรเกิดขึ้น


0

ลองใช้ wifi เท่านั้นเมื่อคุณเริ่มเซสชัน ssh ครั้งแรก จากนั้นเสียบอีเธอร์เน็ตของคุณซึ่งควรอนุญาตให้มีการเชื่อมต่อใหม่ผ่านอีเธอร์เน็ต แต่การเชื่อมต่อที่สร้างไว้จะยังคงอยู่ใน wifi อย่างน้อยฉันก็เห็นมันใช้งานได้กับ OSX ดังนั้น OS / ฮาร์ดแวร์อาจแตกต่างกัน


0

ฉันค่อนข้างมั่นใจว่าคุณสามารถทำได้ด้วยการแฮ็คข้อมูล w / VMs และ Tunneling จำนวนเล็กน้อย

นี่ยังไม่ทดลอง แต่ให้ฉันรู้ว่ามันใช้งานได้จริงหรือไม่

  1. สร้าง guest VM ที่มี 2 อินเตอร์เฟส, 1 bridged adapter (กับ wifi) และ 1 เครือข่ายเท่านั้น
  2. ให้บอกว่า VM มี 192.168.0.25 สำหรับอะแดปเตอร์ bridged กับภรรยาและ 192.168.56.5 ไปยังโฮสต์เท่านั้น
  3. ภายใน vm สร้างการเชื่อมต่อ ssh w / a tunnel ไปยังพอร์ตของฝั่งไกล 22 ssh -L 10022:remote.server.example.com:22
  4. ตอนนี้เชื่อมต่อผ่านอุโมงค์ ssh 192.168.56.3 -p 10022
  5. เมื่อคุณสูญเสียการเชื่อมต่อ wifi ให้เปลี่ยนอะแดปเตอร์บน VM ไปเป็นอะแดปเตอร์อีเธอร์เน็ต
  6. หวังว่ามันจะไม่ hup หรือไขตารางเส้นทาง

แจ้งให้เราทราบหากใช้งานได้

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