![在 Windows 上从 plink.exe 运行时 SSH 终端宽度](https://linux22.com/image/1300641/%E5%9C%A8%20Windows%20%E4%B8%8A%E4%BB%8E%20plink.exe%20%E8%BF%90%E8%A1%8C%E6%97%B6%20SSH%20%E7%BB%88%E7%AB%AF%E5%AE%BD%E5%BA%A6.png)
我正在使用 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 的等效版本是什么