我经常使用 putty ssh 到 linux。有时直接ssh,有时通过“在putty中打开会话”调用winscp内的putty。
在某些情况下,当我连接两个腻子终端并输入“exit”退出其中之一时,终端不会关闭。它显示“注销”但保持打开状态。当我“退出”另一个终端后它将关闭。但有时终端在我输入“exit”后立即关闭。
我想知道这背后的规则是什么。
答案1
ControlMaster
这听起来像是您已将ssh 配置文件(或 puTTY 的等效项)中的选项设置为auto
:
控制大师
允许通过单个网络连接共享多个会话。当设置为 yes 时,ssh(1) 将侦听使用 ControlPath 参数指定的控制套接字上的连接。其他会话可以使用相同的 ControlPath 连接到此套接字,并将 ControlMaster 设置为 no(默认值)。这些会话将尝试重用主实例的网络连接,而不是启动新的网络连接,但如果控制套接字不存在或未侦听,则将回退到正常连接。
将其设置为询问将导致 ssh(1) 侦听控制连接,但需要使用 ssh-askpass(1) 进行确认。如果无法打开 ControlPath,ssh(1) 将继续,而不连接到主实例。
这些多路复用连接支持 X11 和 ssh-agent(1) 转发,但是转发的显示器和代理将属于主连接,即不可能转发多个显示器或代理。
另外两个选项允许机会性多路复用:尝试使用主连接,但如果尚不存在则回退到创建新连接。这些选项是:自动和自动询问。后者需要像询问选项一样进行确认。
这意味着在第一个会话打开后,其他会话将使用相同的网络连接,而不是打开其他会话,从而占用更少的带宽并可能减少延迟。
然而,这也意味着,在所有其他会话结束之前,第一个“主”会话无法在不断开连接的情况下关闭其连接。因此,它将保持打开状态,直到所有其他会话都终止。 (如果您以某种方式强制它关闭,例如通过终止运行第一个连接的 puTTY 任务,您会注意到每个其他会话也会关闭。)