我很新的SCP协议和JSch。我有通过SCP传输文件来回远程设备到Android。服务器端开发人员拒绝告诉除外文件位置对他们的设备是什么,可以用来与SCP访问它的root帐户。
下面是我试过的步骤。
ChannelExec
对象,我可以发送命令ls
并读取其输出。 [完成]ChannelSFTP
对象,我可以从设备传输文件。 [失败]为什么(3)失败的原因似乎是设备(服务器)未配置为SFTP。制造商口口声声说对SSH命令,即像下面的工作:
scp [email protected]/usr/WS026.jpeg [targetPath]
他们说,上面的命令将第一个参数复制到客户端的目标路径。因此,除了使用SFTP,我怎么能实现在JSch通道“执行”?
如果设备支持SCP而已,不要尝试使用SFTP,SCP使用。
还有实现使用JSch的SCP下载的官方例子: http://www.jcraft.com/jsch/examples/ScpFrom.java.html
不要通过scp
的示例代码调用困惑。这就是SCP协议是如何工作的。本地(OpenSSH的)scp
执行远程服务器上的scp
(具体的非公开争论,在这种情况下,-f
),然后两个实例互相交谈。该示例实现局部scp
。用于远程scp
的参数是不是你会使用本地scp
的参数。
参见Explanation for SCP protocol implementation in JSch library。