ฉันควรทำอย่างไรเมื่อเซสชัน SSH ติดขัด


109

บางครั้งเซสชัน ssh ของฉันในเทอร์มินัลหยุดทำงาน ฉันจะออกจากเซสชัน ssh และเชื่อมต่อใหม่ได้อย่างไร

คำตอบ:


195

พิมพ์~.(เช่นตัวหนอนระยะเวลา) ที่จุดเริ่มต้นของบรรทัด ในคำอื่น ๆ กดEnterแล้วแล้ว~ .(ในบางภาษาคุณอาจต้องกดShiftหรือAltเพื่อป้อน~อักขระ)

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

  • ~. เพื่อยุติการเชื่อมต่อ
  • ~^Z(กด~จากนั้นCtrl+ Z) เพื่อหยุดการเชื่อมต่อและพิมพ์คำสั่งภายใน (เรียกใช้คำสั่งfgเพื่อกลับไปที่เซสชัน SSH)

หากคุณต้องการเครื่องหมายตัวหนอนที่จุดเริ่มต้นของบรรทัดให้กด~สองครั้ง


7

สิ่งที่คุณต้องทำเพื่อออกจากเซสชัน ssh คือพิมพ์exitที่พรอมต์

ลองป้อนShift+ `+.


2
ไม่ยอมรับการป้อนข้อมูลของผู้ใช้อีกต่อไป ใน Ubuntu มีการรวมแป้นพิมพ์ที่ยุติเซสชันที่คุณสามารถใช้ในกรณีเช่นนี้ หลังจากผ่านไปครู่หนึ่งเซสชั่นจะยุติการระบุbroken-pipeแต่ฉันไม่รอ
Kit Sunde

1
@ คิทฉันแก้ไขคำตอบของฉันแล้ว ขอโทษสำหรับเรื่องนั้น. ฉันไม่ได้ตระหนักว่าคุณหมายถึงเซสชั่น SSH จนตรอกอย่างสมบูรณ์
daviesgeek

ฉันมักจะรอให้หมดเวลา แม้ว่าข้อเท็จจริงที่ฉันรู้เกี่ยวกับคำสั่งเหล่านี้ฉันลืมเสมอว่าฉันสามารถใช้พวกเขาเพื่อเร่งกระบวนการของการเรียกคืนเชลล์ของฉัน หมายเหตุ @ คำตอบของ Gilles เช่นกันคุณอาจต้องกด Enter / Return หนึ่งครั้งก่อนที่~. คุณจะสามารถเรียนรู้เพิ่มเติมได้ในmanpage SSH (มากกว่าครึ่งทาง) และโดยพิมพ์: ~?ลงในเซสชัน SSH ที่ใช้งาน / เชื่อมต่ออีกครั้งคุณอาจมี เพื่อกด Enter หนึ่งครั้งก่อน
Jason Salaz

7

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

หากคุณต้องการอย่างถี่ถ้วนแม้ว่าคุณจะสามารถเปิดอินสแตนซ์ Terminal ใหม่ให้ค้นหาเซสชัน ssh ในรายการกระบวนการและฆ่าพวกเขาผ่านบรรทัดคำสั่ง:

> ps -ef  |grep ssh
501  1332   142   0 20Dec11 ??         0:01.33 /usr/bin/ssh-agent -l
501 57172 57150   0  1:58pm ttys000    0:00.01 grep ssh
501 57139 57133   0  1:57pm ttys002    0:00.03 ssh -i/Users/ian/code/ec2-keys/id_rsa-gsg-keypair someuser@someinstance.amazonaws.com

> kill 57139

หากไม่ได้ผลลอง:

> kill -9 57139

อย่าฆ่าssh-agentกระบวนการ

หรือคุณสามารถเปิดการตรวจสอบกิจกรรมและค้นหาเซสชันและกดปุ่มฆ่าที่นั่น:

การกรองการตรวจสอบกิจกรรมสำหรับเซสชัน ssh


+1 นี่คือสิ่งที่ฉันทำ บ่อยครั้งที่ฉันออกจากการใช้งานเซสชันและจากนั้นการเชื่อมต่อจะหยุดโดยไม่ตั้งใจหรือฉันนอนหลับแล็ปท็อปมันทำให้ ssh หยุดทำงาน ฉันเปิดแท็บคอนโซลใหม่และฆ่า PID ของกระบวนการ ssh (หรือปิดแท็บ ssh และเปิดขึ้นใหม่)
21990

การใช้แป้นพิมพ์ลัดทำงานบน Mac ของคุณโดยไม่ต้องฆ่ากระบวนการอย่างน่าเบื่อหรือไม่
Rafael Bugajewski

1
~.ใช้ ดูด้านบน.
Snowcrash

0

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

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