ฉันจะใช้การเชื่อมต่อที่ช้า / ไม่สม่ำเสมอได้อย่างไร


20

ฉันกำลังจัดการกับการเชื่อมต่อเชลล์ที่ช้ามาก ๆ มันอยู่ในคลาวด์และฉันอยู่ไกลจากเซิร์ฟเวอร์มาก บางครั้งการเชื่อมต่อของฉันก็หยุดลงเพราะมันผ่านอินเทอร์เน็ตและฉันอาจใช้ Wifi หรือ 3G ที่ใช้ร่วมกัน มีวิธีดูสิ่งที่ฉันพิมพ์ทันทีหรือไม่ พยายามพิมพ์คำสั่งและรออักขระแต่ละตัวมีความเลวร้าย


4
ใช้ "หน้าจอ" เพื่อหยุดเซสชันของคุณเพื่อให้คุณสามารถเชื่อมต่อใหม่ได้เมื่อคุณตัดการเชื่อมต่อ
Konerak

คำตอบ:


24

ลองMosh


แอปพลิเคชั่นเทอร์มินัลMosh (mobile shell)รีโมตเทอร์มินัลที่อนุญาตการโรมมิ่งรองรับการเชื่อมต่อเป็นระยะและให้การสะท้อนเสียงอัจฉริยะในท้องถิ่นและการแก้ไขบรรทัดการกดแป้นผู้ใช้

Mosh แทน SSH มันแข็งแกร่งและตอบสนองได้ดียิ่งขึ้นโดยเฉพาะผ่าน Wi-Fi, เซลลูล่าร์และลิงค์ทางไกล

Mosh เป็นซอฟต์แวร์ฟรีสำหรับ GNU / Linux, FreeBSD, Solaris, Mac OS X และ Android


3
Caveats to mosh: (1) มันเป็นซีพียูที่เข้มข้นกว่า ssh (2) หากเซสชั่น mosh ของคุณไม่ได้จบตามปกติคุณจะมีการเชื่อมต่อรั่วไหลออกมาซึ่งไม่สามารถสร้างขึ้นใหม่ได้ (ฉันต้องทำความสะอาดกล่องเชลล์มิฉะนั้นจะมีหลายสิบกระบวนการทำงาน)
user606723

ปัญหาอีกประการหนึ่งคือมันเป็นไปไม่ได้ที่จะติดตั้งบน linux distro อย่าง Suse (SLES) ฉันใช้เวลาหลายชั่วโมงในการพยายามติดตั้งเป็นแพ็คเกจ openSuse หรือรวบรวมจากแหล่งที่มา
Zombies

$ sudo zypper ใน mosh (ตามเอกสาร)
dmourati

ใช่ว่าจะทำงานได้ดีใน openSuse แต่ บริษัท / ปิด distro มันเป็นหน้าที่ที่ต้องติดตั้งโครงการโอเพ่นซอร์สใหม่
Zombies

10

ทางเลือก (และเพิ่มเติมจาก) คำตอบ dmourati: ใช้screenหรือtmuxสิ่งอื่น ๆ เพื่อให้เซสชันมีชีวิตอยู่เมื่อคุณตัดการเชื่อมต่อ (คุณเพียงแค่แนบไปกับเซสชั่นอีกครั้งหลังจากที่คุณเชื่อมต่อใหม่และดู terminal ในขณะที่คุณออกจากมันแม้จะมีโปรแกรมเต็มหน้าจอ [vi, ฯลฯ ]) นอกจากนี้ยังมีประโยชน์อื่น ๆ อีกมากมาย (การแบ่งปันเซสชันกับเพื่อนร่วมงาน ฯลฯ ) (เช่นในคำถามที่พบบ่อยของ Mosh:

ถาม: เหตุใดบัฟเฟอร์การเลื่อนกลับของเทอร์มินัลของฉันจึงไม่สมบูรณ์

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

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


2

คุณควรดูว่าจุดแฝง / คอขวดอยู่ที่ไหน คุณควรพยายามเข้าถึงโครงสร้างพื้นฐานให้ดีขึ้น ... ทั้งในระดับท้องถิ่นและที่ด้านข้างของผู้ให้บริการ คุณปิดเซสชันสำคัญหรือวิกฤติของคุณในtmuxหรือscreenมัลติเพล็กเซอร์ ...

กรุณาให้หมายเลขกับเรา มันใช้การเชื่อมต่อที่ไม่ดีเป็นพิเศษสำหรับการประชุม SSH แบบง่าย ๆ เพื่อที่จะมีปัญหา ... ฉันต้องเข้าถึงระบบในอีกด้านหนึ่งของโลกจากเครื่องบินผ่าน VPN และยังไม่ได้มีปัญหามากเกินไป นี่เป็นปัญหาถาวรหรือไม่ สิ่งที่ไม่tracerouteบอกคุณ?


ปัญหานี้เกิดขึ้นกับโรงแรม wifi จำนวนมากซึ่งมีเราเตอร์น้อยเกินไปและมีอุปกรณ์ / แล็ปท็อปมากเกินไปที่ใช้อินเทอร์เน็ตร่วมกัน นอกจากนี้ยังมี wifi ของโรงแรมที่ใช้ร่วมกันโดยเนื้อแท้แล้วค่อนข้างแย่ด้วยเวลาปิงเพราะผ่านผนัง 1 หรือมากกว่านั้นทำให้ ms ล่าช้ามากจริงๆ นั่นคืออีกหนึ่งคอขวดที่สำคัญ สถานการณ์ที่คล้ายกันเกิดขึ้นบน 3G ซึ่งระยะทางที่ไกลจากหอโทรศัพท์มือถือเพิ่ม MS เมื่อใช้กระสุน SSH ฉันต้องรอตัวละครแต่ละตัว MS ของ 200-400 นั้นค่อนข้างน่ารำคาญ แต่ด้วยหนามแหลมสูงถึง 1 วินาที ... อุ๊ย
Zombies

1

สำหรับผู้อ่านหัวข้อนี้ในอนาคตคำแนะนำ @lowellheddings ในบล็อกของเขาพร้อมกับการใช้หน้าจอสามารถช่วยแก้ไขปัญหานี้ได้:

คุณสามารถกำหนดค่าไคลเอนต์ ssh ให้ส่งรหัส no-op code โปรโตคอลทุก ๆ วินาทีเพื่อให้เซิร์ฟเวอร์ไม่ตัดการเชื่อมต่อคุณ บางครั้งการตั้งค่านี้เรียกว่า Keep-Alive หรือ Stop-Disconnecting-So-Much ในไคลเอนต์อื่น ๆ
เพิ่มบรรทัดต่อไปนี้ในไฟล์ / etc / ssh / ssh_config:
ServerAliveInterval 60
...

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