SSHpipe道文件并执行

我试图执行我的ssh服务器上的一个二进制文件,只要我login。但是我可能想推动我的二进制更新与一个单一的SSHlogin,并执行。 我目前的过程是这样的

cat exec | ssh user@host 'cat - > exec; chmod +x exec; ./exec'

这不起作用,因为当我击中这个合理的执行,它似乎只是冻结。 在这之后,我没有得到服务器的回应。 奇怪的是,我已经上传了文件,我可以简单地执行

ssh user@host './exec'

和文件执行得很好。 我知道它正在到达二进制文件的执行过程,并且chmod正确地设置了它在一个命令中不会执行的文件的可执行位。 有没有人有什么build议。

使用tar而不是cat,并且如果exec有x位,tar保持模式。

tar cf – ./exec | ssh user @ server'tar xf – ; ./exec”

我的猜测是你的二进制文件陷入了ssh转义序列。 ssh不能保证是二进制透明的,但是你可以看到是否在你的ssh命令中join了' -e none '。