【问题标题】:How an output of Windows application executed on remote SSH server gets to a local SSH client在远程 SSH 服务器上执行的 Windows 应用程序的输出如何到达本地 SSH 客户端
【发布时间】:2017-11-15 22:42:55
【问题描述】:

我正在使用 PuTTY 连接到在 Windows 7 上运行的 SSH 服务器。

当我在 PuTTY 终端发出powershell 时,是否意味着powershell 命令窗口会在远程计算机上打开?

如果是这样,远程运行powershell 窗口的输出如何路由到 PuTTY 客户端?

对不起,如果这是一个蹩脚的问题,但对我来说并不是那么明显。

【问题讨论】:

  • 您使用的是哪个 SSH 服务器?
  • @Fang 我使用的 ssh 服务器有什么区别?任何 ssh 服务器不都一样吗?

标签: powershell ssh putty


【解决方案1】:

在远程计算机上执行 PowerShell 时,服务器上不会打开任何窗口。

powershell.exe 是一个控制台应用程序。控制台应用程序具有标准 IO(输入和输出)。如果您在本地运行 Windows 控制台应用程序,Windows GUI 会创建一个控制台窗口并将应用程序 IO 绑定到该窗口。而如果您通过 SSH 服务器运行控制台应用程序,则 SSH 服务器会将应用程序 IO 绑定到 SSH shell 会话。因此,PowerShell 打印的任何内容都会被路由到 SSH shell 会话输出,最终呈现在您的本地 SSH 客户端窗口 (PuTTY) 中。

换句话说,本地 PowerShell 窗口由 Windows GUI(执行 PowerShell 的系统)呈现,而不是由 PowerShell 进程本身(与 GUI 应用程序的窗口相反)。另一个系统,比如 SSH 服务器,可以选择完全不同的 IO“渲染”,比如将 IO 路由到 SSH shell 会话。

如果您在 *nix 服务器上使用 ls 命令,则过程相同。 ls 也是一个控制台应用程序。 (Afaik,所有 *nix 应用程序实际上都是控制台应用程序,在 Windows 上不是这样。)

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多