JSch SCP 文件传输使用"exec"通道



我对SCP协议和JSch非常陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露任何关于他们设备的信息,除了文件位置,以及可以使用SCP访问它的根帐户。

这是我尝试过的步骤。

  1. 确认使用JSch,我的Android客户端可以与服务器建立连接。[完成]

  2. 确认使用JSch和ChannelExec对象,我可以发送ls命令并读取其输出。[完成]

  3. 确认使用JSch和ChannelSFTP对象,我可以从设备传输文件。(失败)

(3)失败的原因似乎是设备(服务器)没有配置SFTP。maker一直在说ssh上的命令像下面这样工作:

scp root@192.168.5.1/usr/WS026.jpeg [targetPath]

他们说上面的命令将第一个参数复制到客户端的目标路径。所以,除了使用SFTP, 我如何在JSch通道"exec"中实现它?

如果设备只支持SCP协议,请不要尝试使用SFTP协议,使用SCP协议。

有一个使用JSch实现SCP下载的官方示例:
http://www.jcraft.com/jsch/examples/ScpFrom.java.html

不要对示例代码中scp的调用感到困惑。这就是SCP协议的工作原理。本地(OpenSSH) scp在远程服务器上执行scp(使用特定的非公共参数,在本例中是-f),然后两个实例相互通信。本例实现了本地scp。用于远程scp的参数与用于本地scp的参数不同。

参见JSch库中SCP协议实现说明

最新更新