为什么ssh要在服务器端分配一个tty?

为什么ssh要在服务器端分配一个tty?

基本上,当您在服务器上运行交互式程序时,您需要使用ssh -t而不是ssh.例如:

  • 这有效:ssh -t user@server top.

  • 这不起作用:ssh user@server top.

问题是:为什么 ssh 需要服务器端 tty 来运行此类程序?是否可以在服务器程序和客户端tty之间直接传输数据流?


添加一些细节,我们知道 tty 可以将 stdout 和 stderr 复用到单个流上。这意味着如果您ssh -t在客户端运行,您将无法区分 stdout 和 stderr 之间的区别,也无法分别通过管道传输它们。因此,我认为介于两者之间的服务器端 tty 破坏了某种透明度。如果 ssh 使运行服务器端程序的体验与本地程序的体验完全相同,那就太好了。

相关内容