退出 SSH 连接时,~.(波浪点)和“exit”有什么区别

退出 SSH 连接时,~.(波浪点)和“exit”有什么区别

每当我在 SSH 会话中有一个后台 X11 连接时,我必须使用~.并且不要exit退出 ssh 会话。

这里有什么区别?我总是可以使用转义序列吗~.

答案1

exit告诉您当前的 shell 退出。因为(当没有隧道连接(例如 X11)处于活动状态时)这意味着 sshd 在服务器端调用的进程已退出,因此 SSH 将断开连接。

~.是 SSH 捕获并立即断开连接(包括 X11 隧道)的“神奇”转义序列。

所以,不,它们不能互换。如果您希望远程 shell(或远程运行的任何程序)正常退出,则应相应地结束它。

答案2

其他答案中已经对此进行了很好的描述,但我想补充一些背景信息:

当今的单个 SSH 连接可以包含多个会议(你的 shell,命令),TCP 转发渠道和X11 转发渠道。区别就在于此:

  • 书写exit(或Ctrl+ D)可拆除会议通道,但如果有一些 X11 通道处于活动状态(例如gvim与处理剪贴板和标题的 X 服务器保留多个连接(未被 关闭exit)。写入exit将使此 X11 应用程序保持运行,并且您的终端将“挂起”,直到它关闭为止。

  • 写作~.撕毁了整个联系。您会注意到,如果您运行某些 X11 应用程序,当您写入时它也会被关闭~.

相关内容