如何使Putty SSH连接在用户空闲时不超时?

我有一台购买的Ubuntu 12.04服务器,如果我使用ssh和一个sudoer用户通过putty连接,当我闲置一段时间后,putty会被服务器断开连接。
我该如何配置Ubuntu以保持这个连接无限期地保持活动状态?
5个回答

如果你去到你的putty设置->连接,并将“保持活动之间的秒数”值设置为30秒,这应该解决你的问题。

PuTTY Configuration


3“0关机”或“30关机”?我认为他应该输入0而不是30! - kokbira
3不,这是保持存活时间的间隔。如果将其设置为0,则不会发送保持存活信号,但您希望PuTTY发送保持存活信号以保持连接活动。 - das Keks
我做了这个,但它仍然掉下来了。。 - aerin
3为什么是30秒?他说永不超时,所以应该是“9999999999999”吧? - NoName
6@NoName 因为这个设置是针对“保持活动间隔”的。这意味着它会每30秒发送一个“ping”来防止连接超时。 - das Keks
您是否还需要勾选“启用TCP保活”旁边的复选框,以确保保活间隔时间的设置生效? - snark
1对我来说,没有勾选TCP复选框也能正常工作。因为TCP连接用于发送“空包”,所以可能不需要额外的TCP保活。如果空闲的TCP连接在几秒钟内被路由器或防火墙关闭,这个复选框可能会有帮助(或将保活间隔设置为5秒甚至1秒)。 - das Keks
没有保存按钮来保存配置 - undefined
@HardeepSingh 当你点击“打开”时,它应该保存。 - undefined

除了“das Keks”的答案之外,还有至少一个其他因素可能会影响这种行为。Bash(通常是Ubuntu上的默认shell)有一个名为TMOUT的值,它规定了空闲shell会话超过多长时间(以秒为单位)后将超时并使用户注销,从而导致SSH会话中断。
此外,我强烈建议您完全采用其他方案。设置byobu(或者只使用tmux,因为它比GNU screen更优秀),并始终登录并附加到一个预先存在的会话中(这是GNU screentmux的术语)。这样即使您被强制断开连接 - 让我们面对现实,停电或网络中断总是可能发生的 - 您也可以在离开的地方恢复工作。而且这适用于不同的计算机。因此,您可以从另一台计算机(例如家庭)连接到相同的会话。可能性是多样的,这是真正的生产力提升器。别忘了,终端复用器克服了PuTTY的一个重大缺点:没有选项卡界面。现在您可以在GNU screentmux内部的窗口和窗格中获取“选项卡”。
apt-get install tmux
apt-get install byobu

Byobu是一个很好的终端复用器的前端界面,但是tmux非常舒服,在我看来,它在很大程度上使byobu变得过时。所以我的建议是使用tmux。
此外,在网上搜索"dotfiles",特别是tmux.conf和.tmux.conf,可以找到许多很好的自定义配置,帮助你入门。

打开PuTTy选项 --> 连接

  1. 更改“保持连接间隔时间(0秒表示关闭)”的默认值
    • 将其从0秒更改为60秒(1分钟) --如果1分钟不起作用,可以适当减少
  2. 勾选“启用TCP_keepalives(SO_KEEPALIVE选项)”复选框。
  3. 最后保存会话设置

30秒的超时对我从来没有起作用,所以我尝试了一下,并通过将超时时间增加到240(4分钟)找到了一个解决方案,现在它完美地运行。

我通过监控cron日志来保持我的PuTTY会话的活跃。
tail -f /var/log/cron

我希望保持PuTTY会话的活跃状态,因为我正在通过代理进行socks代理。