ssh - 禁用伪终端分配

ssh - 禁用伪终端分配

ssh 客户端选项“-T”是禁用伪终端分配。

如果我打开此选项,远程 sshd 将不会分配 pty 来运行远程命令。远程命令的输出如何传输回ssh客户端?据我所知,ssh客户端和服务器之间的简单输入/输出是:

ssh client <--- (TCP/IP) --> ssh server <---> ptm <---> pts <---> remote command

使用选项-T,是否意味着sshd不会创建pty对来运行远程命令?

答案1

如果使用 关闭 pty 分配-T,sshd 将使用一对管道而不是双向 pty 与运行远程命令的进程进行通信。

你可以看看do_exec_no_pty()OpenSSH 源代码中的函数(如果没有在任何地方记录)。dropbear(另一个 sshd 实现)正在做类似的事情。

在 pty 的情况下已分配(-t选项或未指定远程命令),仅在远程计算机上分配一个 pty;客户端 ssh 不会在本地计算机上分配 pty;如果这是一个 tty,它只会在其标准输入上打开原始模式。

相关内容