使用 "exec" 频道的 JSch SCP 文件传输
JSch SCP file transfer using "exec" channel
我对 SCP 协议和 JSch 很陌生。我必须通过 SCP 将文件从远程设备传输到 Android。服务器端开发人员拒绝透露有关他们设备的任何信息,除了文件位置和可用于通过 SCP 访问它的根帐户。
这是我试过的步骤。
确认使用 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
(使用特定的 non-public 参数,在本例中为 -f
) 然后两个实例互相交谈。该示例实现了本地 scp
。用于远程 scp
的参数不是您将用于本地 scp
.
的参数
另见 Explanation for SCP protocol implementation in JSch library。
我对 SCP 协议和 JSch 很陌生。我必须通过 SCP 将文件从远程设备传输到 Android。服务器端开发人员拒绝透露有关他们设备的任何信息,除了文件位置和可用于通过 SCP 访问它的根帐户。
这是我试过的步骤。
确认使用 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
(使用特定的 non-public 参数,在本例中为 -f
) 然后两个实例互相交谈。该示例实现了本地 scp
。用于远程 scp
的参数不是您将用于本地 scp
.
另见 Explanation for SCP protocol implementation in JSch library。