วิธีทำให้ผงสำหรับอุดรูที่จะไม่หยุดเซสชั่นของฉันหลังจากเวลา?


34

แต่ละครั้งputtyจะปิดเซสชั่นหลังจากเวลาถ้ามันไม่ได้ใช้งาน

ไม่มีtimeพารามิเตอร์ในการโป๊วดังนั้นฉันจะเก็บputtyเซสชัน ssh ของฉันยังมีชีวิตอยู่ได้อย่างไร

คำตอบ:


15

สิ่งที่ต้องตรวจสอบอีกอย่างก็คือหากระบบของคุณกำลังตั้งค่าตัวแปรสภาพแวดล้อม TMOUT หากต้องการตรวจสอบสิ่งนี้คุณสามารถทำได้:

env | grep TMOUT

หรือ

echo $TMOUT

หากตั้งค่าไว้คุณสามารถเปลี่ยนหรือยกเลิกการตั้งค่าได้ วิธีเปลี่ยนค่า:

export TMOUT=3600

โดยที่ตัวเลขคือจำนวนวินาทีจนกว่าคุณจะออกจากระบบ มิฉะนั้นจะไม่ตั้งค่าให้ปิดคุณลักษณะ:

unset TMOUT

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


48

เปิดใช้งาน KeepHostives SSHโดยเปลี่ยนการตั้งค่าต่อไปนี้เป็นค่าบวก:

หน้าการเชื่อมต่อของ PuTTY Configuration หน้าการเชื่อมต่อ

ค่า 300 ควรพอเพียงในกรณีส่วนใหญ่ (5 นาที) สิ่งนี้ทำให้ PuTTY ส่งแพ็กเก็ต null SSH ไปยังโฮสต์ระยะไกลเป็นระยะเพื่อให้เซสชันไม่หมดเวลา

โปรดทราบว่าเราไม่ต้องการให้SO_KEEPALIVEตัวเลือกต่ำลงในหน้านั้น นั่นเป็นกลไกระดับล่างที่ดีที่สุดซึ่งจะใช้งานได้ดีที่สุดเมื่อโปรโตคอลระดับแอปพลิเคชันไม่มีกลไกแบบรักษาตัวเองเท่านั้น SSH ทำดังนั้นเราไม่ควรใช้ TCP keepalives ในกรณีนี้

มีสิ่งอื่น ๆ ที่อาจทำให้การเชื่อมต่อตก แต่นี่เป็นสิ่งแรกที่ควรลอง หากไม่สามารถใช้งานได้คุณจะต้องตรวจสอบสิ่งต่างๆเหล่านี้: หมดเวลา VPN, หมดเวลาเราเตอร์, เปลี่ยนการตั้งค่าบนเซิร์ฟเวอร์ SSH ระยะไกล, การเชื่อมต่อที่ไม่สม่ำเสมอ ฯลฯ


3
หรือเรียกใช้บางสิ่งบางอย่างที่สร้างเอาต์พุตต่อเนื่องเช่นtopเมื่อคุณไม่อยู่
LawrenceC

1
@ultrasawblade: นั่นคือการแก้ไขเทปพันท่อ; มันแค่จัดการกับอาการ แต่ไม่ได้แก้ปัญหาที่แท้จริง
Kevin M

การกำหนดค่านี้ใช้กับ Windows CLI หรือไม่ ฉันหมายถึงแทนที่จะบันทึกเซสชันฉันสร้างลิงก์ไปยัง putty.exe ผ่านข้อมูลรับรองการเข้าสู่ระบบเป็นอาร์กิวเมนต์ (รหัสผ่านโฮสต์ putty.exe -l root -pw รหัสผ่าน) ถ้าไม่มีอาร์กิวเมนต์ใด ๆ ที่ใช้ตัวเลือกนี้ผ่าน CLI หรือไม่
Mc Kernel

3
นี่เป็นโซลูชันที่ยอดเยี่ยมโดยเฉพาะอย่างยิ่งเมื่อคุณทำงานกับการเชื่อมต่อที่ไม่เสถียรและคุณไม่จำเป็นต้องเปลี่ยนแปลงเซิร์ฟเวอร์เพียงครั้งเดียว (ต่างจากโซลูชันที่ยอมรับ)
itoctopus

ไม่มีใครรู้วิธีการระบุนี้ผ่านทางบรรทัด cmd?
Janac Meena

8

นอกเหนือจากคำตอบอื่น ๆ ฉันขอแนะนำให้ใช้screenเพื่อให้สามารถจัดการเซสชันได้แม้ว่าสีโป๊วจะสิ้นสุดลง (การเชื่อมต่อกำลังจะตาย vpn กำลังจะลง ฯลฯ )


6

ตรวจสอบตัวเลือกต่อไปนี้ใน PuTTY:

ป้อนคำอธิบายรูปภาพที่นี่


น่าเศร้าที่ SO_KEEPALIVE ดูเหมือนจะถูกส่งทุก ๆ สองสามชั่วโมง (อย่างน้อยก็โดยค่าเริ่มต้น) ดังนั้นชื่อที่ดีกว่าสำหรับพวกเขาคือ "ตรวจสอบว่าคนตาย" LOL
rogerdpack

3

เพียงแค่เปิดใช้งานด้วยผงสำหรับอุดรูของคุณเพื่อให้แน่ใจว่าการเปิดใช้งานเซสชั่นของคุณทุก ๆ 10 นาที

 while true; do date; sleep 600; done

ฉันเรียกใช้สิ่งนี้บนเซิร์ฟเวอร์เสมอและมันไม่ทำงาน
cokedude

1

หากไม่มีการข้างต้นไม่ได้ช่วย
คุณต้องเปลี่ยนการตั้งค่าระบบของคุณ!
โปรดทราบว่าคุณจะต้องมีสิทธิ์รูทสำหรับสิ่งนี้!

แก้ไขsshd_config ไฟล์ของคุณ ในกรณีของฉันมันตั้งอยู่/etc/ssh/sshd_config

เนื้อหาคือ:

ClientAliveInterval 300  
ClientAliveCountMax 0

เปลี่ยนไป:

ClientAliveInterval 6000  
ClientAliveCountMax 3

อย่าลืม

service sshd restart

1

คุณสามารถใช้topคำสั่งในเชลล์พรอมต์ สิ่งนี้จะทำให้เซสชันของคุณยังมีชีวิตอยู่


ดูเหมือนว่าวิธีแก้ไขปัญหาแทนที่จะเป็นวิธีแก้ปัญหา
Kusalananda

@ Kusalananda ฉันคิดว่าวิธีแก้ปัญหาอาจเป็นวิธีแก้ปัญหาด้วย
peterh กล่าวว่าคืนสถานะโมนิก้า

0

ในฉาบเมนูใช้ค่าต่อไปนี้เป็นConnection>SSHRemote command: bash --rcfile <(echo 'source ~/.bash_profile; unset TMOUT')

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