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


62

หลายครั้งที่ฉันมีเซสชัน SSH ที่ไม่ตอบสนองอีกต่อไป (ตัวอย่างเช่นเมื่อฉันขาดการเชื่อมต่ออินเทอร์เน็ตจากนั้นเชื่อมต่อใหม่) Ctrl+ C, Ctrl+ D, Ctrl+ Zและการกดปุ่มหนึ่งพันล้านครั้งจะไม่มีผลกระทบใด ๆ

เวลาส่วนใหญ่ที่ฉันมีtmuxหรือbyobuใช้งานอยู่แล้วดังนั้นฉันจึงสามารถเริ่มต้นเทอร์มินัลอื่นและเชื่อมต่อใหม่ อย่างไรก็ตามมันไม่ยุ่งยาก ฉันจะยกเลิกการเชื่อมต่อ SSH จากเทอร์มินัลปัจจุบันได้อย่างไร

คำตอบ:


87

ใช้ "escape character" (โดยปกติคือ tilde ~) เพื่อควบคุมเซสชัน SSH:

  • ~ตามด้วยการ.ปิดการเชื่อมต่อ SSH;
  • ~ตามด้วยCtrl+ Zระงับกระบวนการ SSH
  • ~ตามมาด้วยอีกส่งตัวอักษร~~

คุณสามารถตั้งค่าตัวหนีโดยใช้-eตัวเลือกในการ ssh

นอกจากนี้โปรดจำไว้ว่า

นอกจากนี้คุณควรจำไว้ว่าให้กดก่อนEnter ~อักขระ escape ใช้งานได้เมื่อเป็นอักขระตัวแรกในบรรทัด และคุณสามารถใช้~และหลังจากนั้น?เพื่อรับความช่วยเหลือจากไคลเอ็นต์ ssh (ขอบคุณที่แสดงความคิดเห็นโดยLukasz Stelmach )


11
นอกจากนี้คุณควรจำไว้ว่าให้กดก่อนEnter ~อักขระ escape ใช้งานได้เมื่อเป็นอักขระตัวแรกในบรรทัด และคุณสามารถใช้~และภายหลัง?เพื่อรับความช่วยเหลือจากไคลเอ็นต์ ssh
Lukasz Stelmach

7
~ตามด้วย?ให้รายการที่สมบูรณ์ของลำดับหนีที่ได้รับการสนับสนุน
Matijs

1

Openssh สามารถกำหนดค่าให้ส่งข้อความไคลเอ็นต์หรือเซิร์ฟเวอร์ที่ใช้งานได้จริงไปยังอีกด้านหนึ่ง หากไม่ได้รับการตอบสนองการเชื่อมต่อจะถูกยกเลิก จากฝั่งเซิร์ฟเวอร์ให้ดูClientAliveIntervalและClientAliveCountMaxการตั้งค่าตัวเลือก จากฝั่งไคลเอ็นต์ดูServerAliveIntervalและServerAliveCountMaxตัวเลือก TCPKeepAliveยังเป็นตัวเลือก แต่สามารถปลอมแปลงได้ในขณะที่ตัวเลือกเดิมไม่ได้ดังนั้นจึงน่าจะดีกว่า

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

ดูหน้า man configของOpenSSH sshdและหน้า man configของOpenSSH sshสำหรับการทำ infrormation เพิ่มเติม


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