基本上,当您在服务器上运行交互式程序时,您需要使用ssh -t
而不是ssh
.例如:
这有效:
ssh -t user@server top
.这不起作用:
ssh user@server top
.
问题是:为什么 ssh 需要服务器端 tty 来运行此类程序?是否可以在服务器程序和客户端tty之间直接传输数据流?
添加一些细节,我们知道 tty 可以将 stdout 和 stderr 复用到单个流上。这意味着如果您ssh -t
在客户端运行,您将无法区分 stdout 和 stderr 之间的区别,也无法分别通过管道传输它们。因此,我认为介于两者之间的服务器端 tty 破坏了某种透明度。如果 ssh 使运行服务器端程序的体验与本地程序的体验完全相同,那就太好了。