使用“exec”频道进行JSch SCP文件传输
我是SCP协议和JSch的新手。 我必须通过SCP将文件从远程设备传输到Android。 服务器端开发人员拒绝告诉他们他们的设备,除了文件位置,以及可用于通过SCP访问它的root帐户。
这是我尝试的步骤。
-
确认使用JSch,我的Android客户端可以与服务器建立连接。 [完成]
-
确认使用JSch和
ChannelExec
对象,我可以发送ls
命令并读取其输出。 [完成] -
确认使用JSch和
ChannelSFTP
对象,我可以从设备传输文件。 [失败]
(3)失败的原因似乎是没有为SFTP配置设备(服务器)。 制造商继续说下面的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协议实现说明 。