通过Plink(PuTTY)从Windows机器通过以下方式打开SSH连接到Windows服务器:
Plink.exe -t <hostname> /bin/bash
然后,将bash命令行写入Plink.exe的stdin,并由远程
/bin/bash
进程进行解析和执行。只要bash命令行的长度不超过256个字符,它就可以工作。写入256个字符后,不再回显任何字符,而是为每个其他字符返回BEEP(ASCII代码7)。
(使用
/bin/bash
而不是直接调用脚本似乎很奇怪,但这是更复杂场景的简化示例)仅当使用-t标志时,才会出现256个字符的限制,但是在solaris服务器上执行的命令需要TTY。
Plink.exe
进程是从Windows计算机上的JVM启动的。我尝试使用“本地行编辑”和“本地回显”都处于关闭状态的PuTTY session 配置加载Plink.exe,但是行为是相同的。
在SSH客户端(
Plink.exe
)或服务器端(Solaris,OpenSSH,Bash)限制为256个字符吗?如何避免256个字符的限制?
最佳答案
规范模式下输入到TTY的内容是逐行读取的,很大的一行可能不适合输入队列。通过将TTY设置为原始模式,可以直接读取每个字符,并且行可以大于输入队列。
通过调用“stty raw”解决了问题。
关于shell - 伪TTY行限制为256个字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501986/