sftp 因“消息太长”错误而失败

tom*_*per 6 ssh sftp jsch ssh2-sftp

我的 java 程序使用 ssh/sftp 将文件传输到 linux 机器(显然......),而我这样做的库是 JSch(尽管这不是罪魁祸首)。

现在,其中一些 linux 机器具有 shell 登录启动脚本,这可悲地导致 ssh/sftp 连接失败,并显示以下消息

收到的消息太长 1349281116

在简要阅读之后,这显然是一个已知的 ssh 设计问题(不是错误 -请参阅此处)。并且所有建议的解决方案都在 ssh 服务器端(即禁用在 shell 登录期间输出消息的脚本)。

我的问题 - 是否可以选择在客户端避免此问题?

tom*_*per -2

这是一个快速但肮脏的解决方案,但它似乎也适用于二进制文件。所有功劳均归uvgroovy所有。

给定文件“some-file.txt”,只需执行以下操作:

cat some-file.txt | ssh root:1.1.1.1 /bin/bash -c "cat > /root/some-new-file.txt"
Run Code Online (Sandbox Code Playgroud)

不过,如果有人知道 sftp/scp 内置方法可以在客户端执行此操作,那就太好了。