我在各种 Linux 环境中通过 PuTTY 连接工作,但这些连接有时会中断。我正在寻找一种解决方案,使 PuTTY 窗口持久存在(例如,如果我正在编辑文件,那么重新连接后,我应该在同一个编辑器中,在同一个位置打开同一个文件),要求如下:
- 它不需要在会话开始时或重新连接后进行任何手动设置(我不想输入
screen
或类似的东西) - 我在同一台机器上打开了多个窗口,且用户是同一个用户,这些窗口往往会同时断开连接
- 窗口的数量/角色不是恒定的(我并不拥有一个
mc
窗口、一个mysql
窗口和一个“脚本运行器”窗口;有时我使用一个窗口进行搜索或 SVN 命令,有时我需要同时使用多个窗口) - 有时我需要更改某项任务的窗口属性(大窗口用于查找/编辑,小窗口因为我需要同时看到两个,红色背景因为我正在修改 MySQL 中的实时数据库等),所以我需要在重新连接后在同一个窗口中返回同一个控制台
有办法实现这一点吗?我想我应该使用screen
或类似的东西,但它怎么知道我从哪个窗口重新连接?有没有办法从PuTTY向shell传递一个唯一的窗口标识符?
答案1
快速、干净的解决方案
编辑你的 ~/.bashrc 来运行 screen -r。然后当你登录时,你将自动重新连接到正在运行的 screen 会话。
令人满意的解决方案
- 为您打算最大程度打开的每个屏幕会话(Windows 窗口/PuTTY 会话)创建一个用户。
- 使用每个新创建的用户连接到服务器并运行“screen -S username”以启动以其用户名命名的会话。
- 将“screen -r $(whoami)”附加到每个用户的 ~/.bashrc
- 在您的桌面或 PuTTY 中为每个用户保存一个 Putty 会话,以将它们添加到超级栏的跳转列表或您想要的快捷方式的任何位置,并使用它们启动每个会话。这还将使您能够
编辑:我更愿意专注于解决超时问题。我知道这是一个安全功能,但它不应该在您发送输入时断开您的连接。
答案2
调查mosh
它旨在在网络暂时故障后重新连接终端会话。mosh 有很多注意事项(不同的安全考虑,可能丢失回滚),但它绝对比 putty 更顺畅地解决了断开连接后重新连接的问题。
答案3
seconds between Keepalives
我知道这是一篇旧帖子,但我只是想提一下联系选项选项卡 - 将其设置为非零值以查看是否有帮助 - 请参阅http://the.earth.li/~sgtatham/putty/0.63/htmldoc/Chapter4.html#config-keepalive了解更多信息。