windows ssh服务器偶尔挂起等待键input,即使在非交互模式?

当我尝试SSH服务器(运行freesshd或Win32-OpenSSH ,相同的结果)时,我遇到零星的问题。 当试图运行非交互式命令(来自Debian Jessie和OpenSSH客户端)时,有时(但并不总是,并且以不同的时间间隔)远程命令将停止,并且需要按下ENTER键才能继续。

例如:

ssh -4 -T somehost "mysqldump --master-data --all-databases" > backup.sql & 

在一些Windows机器上,它完成了(如果数据库足够小),但在更大的数据库上,它通常会停止(或者立即停止, backup.sql保留大小为0,或者一段时间后, backup.sql从几兆字节几百兆字节),然后shell会告诉我,SSH客户端进程正在等待input:

 [1]+ Stopped ssh -4 -T somehost "cat mysqldump --master-data --all-databases" > backup.sql 

如果我把它带到fg然后按ENTER ,它将继续工作,即使在我CTRL + Zbg 。 有时候会结束,有时候会再次停下来。

strace确认进程正在等待TTYinput(在文件描述符4上,即RW打开/dev/pts/2或类似的shell产生ssh客户端),这就是进程已经停止的原因。

如果我从没有关联TTY的脚本运行ssh,它将会死亡(因为没有人按ENTER键 )。 如果我提供-n选项来从/dev/nullredirectstdin,ssh将在连接后立即死亡。 这带来了额外的问题,因为不是从terminal(例如cron(8)/ atd(8))运行的ssh连接将立即失败。

只有密切的问题,我已经find了这一个 ,但提供的解决方法(强制PTY使用)不适用于我的情况(有问题的程序修改他们的行为时,检测PTY,添加ANSIsorting和文字换行等)。

不用说,连接到数百个运行OpenSSHD服务器的Debian(以及其他GNU / Linux)系统的相同命令不会遇到任何问题(使用-n或不使用天气)。 sshd服务器在Microsoft Windows上运行时,只会出现问题。

有没有人有想法如何解决或解决这个问题? 我已经尝试过天真的做法:

 yes '' | ssh -4 -T somehost "mysqldump --master-data --all-databases" > backup.sql & 

但它不能正常工作(虽然它修复了等待键盘的ssh,但它也随机设法将新行插入到输出中,这是不可接受的)。 在Windows上也有相关的OpenSSH服务器,即使在非交互模式下也拒绝没有STDIN的情况下工作