【问题标题】:Understanding the PTY argument in ssh2_exec()了解 ssh2_exec() 中的 PTY 参数
【发布时间】:2023-03-13 08:35:01
【问题描述】:

以下问题的答案令我不满意,我想了解更多关于发生了什么的信息。 Can anyone explain the $pty argument in ssh2_exec() function call

它是强制客户端告诉服务器生成 PTY 还是 PTY 完全是客户端的? 据我所知,它附加到诸如 SSHd 之类的进程,这需要调用服务器。 另外,当设置为 true 时,它会模拟默认外壳吗?它是什么? 我知道你可以通过 xterm 例如模拟 PTY,这有什么不同吗?从我的角度来看,仿真意味着它不是真正的 PTY。

读起来可能有点混乱,但我正在努力掌握这个概念。 谢谢你。我很感激。

【问题讨论】:

    标签: php linux ssh pty


    【解决方案1】:

    “pty”本质上是某种应用程序或守护程序之间的“管道”(例如,我从事虚拟化工作,我们使用 pty 为虚拟机提供虚拟终端)。 pty 有“主人”和“奴隶”的一面。从端是您的正常“终端”程序将使用的 - xterm 或 ssh 等。主端由任何“事物”提供数据到终端 [如果你写入 pty,例如当您将文本键入或粘贴到 xterm] 时,它会被控制主控的进程读取 - 然后主控会执行它应该对此类数据执行的任何操作 - 例如在 ssh 情况下通过网络发送它。

    这完全与“你的结局”发生的事情有关。 如果您正在通过 ssh 运行“交互式”命令 - 说“ssh somemachine make menuconfig”[假设您的主目录是 linux 源目录 - 我们将忽略它可能不是的事实],默认为不做一个pty,所以menuconfig可能会失败[至少不能正确运行],因为它是一个“交互式”文本程序,允许你按键移动等等。所以使用“ssh -t somemachine make menuconfig”会给你的 ssh 一个 pty。或者,“ssh somemachine”默认会给你一个 pty,因为你需要在另一端输入东西。

    pty 是一个“本地”终端,但 sshd 进程会从另一端向它提供数据,而您的本地 sshd 进程会将其馈送到 pty 的“主”端。

    这个页面描述了我想说的 http://lugatgt.org/2009/10/28/ssh-tips-and-tricks-2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2020-06-23
      • 2023-02-02
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多