在 Windows 上从 plink.exe 运行时 SSH 终端宽度

在 Windows 上从 plink.exe 运行时 SSH 终端宽度

我正在使用 Console2 运行 Powershell,在其中运行 plink.exe 以连接到 Linux 服务器。它运行正常,但 shell 中的 ps、top 和其他实用程序仅认为输出窗口宽度为 80 个字符,而窗口实际上宽度约为 200 个字符。我怎样才能让它们检测真实的控制台大小?

答案1

plink被设计用作二进制数据的传输 - 它不要求服务器分配“伪终端”(pty)并且不转发本地终端的维度。

('ssh' 客户端在“批处理”模式下运行时也会执行相同的操作,因为伪终端实际上​​会破坏通过它传输的二进制数据。)

如果你想要一个功能齐全的基于控制台的 SSH 客户端,安装 Cygwin OpenSSH使用内置的 Windows OpenSSH ssh.exe

(在 2012 年撰写这篇文章时,Windows 控制台没有提供任何类型的终端仿真,因此即使 plink做过请求服务器分配一个伪终端,你的全屏程序无论如何都无法正常工作——终端控制序列只会在屏幕上显示为垃圾。

OpenSSH 的 Cygwin 变体通过依赖 Cygwin 运行时“神奇地”将控制序列转换为适当的 Windows 控制台操作来处理这个问题,而 PuTTY 没有plink这样的功能。

这种情况只在 Windows 8.1 和更高版本的 Windows 10 中发生了改变,支持 Unix 风格的终端序列,尽管 plink 仍然没有分配 pty – 答案仍然是“使用 OpenSSH”。)

答案2

我知道答案已经被接受了,但我只想说,PuTTY 本身会启动一个合适的终端仿真器,而不会出现 OP 提到的问题。

答案3

您可以使用putty来配置窗口大小,然后plink窗口会识别。我已向 PuTTY 开发人员发送了一个补丁,该补丁plink利用了当前的控制台宽度(在启动时,它不会识别调整大小)。 更新:他们拒绝了该补丁,称 plink 不适用于交互式使用。更新2自定义链接

答案4

在 Linux 方面,你的 shell 是什么?

如果是 bash (我认为是),你可以告诉 bash 更新它对窗口大小的想法

放:

shopt -s checkwinsize

进入 Linux $HOME/.bashrc。我不确定 zsh 的等效版本是什么

相关内容