第1步:会话连接
....
session.connect()
第2步:Shell通道
channel = session.openChannel("shell");
步骤3:执行ssh命令登录Unix服务器并转到所需路径cd /logs/server
PrintStream shellStream = new PrintStream(channel.getOutputStream()); // printStream for convenience
channel.connect();
shellStream.println(command);
shellStream.flush();
步骤4:从Unix服务器获取文件并输入SFTP:
code to connect sftp channel and put the file from unix server to sftp.
所以我想将文件(logs/server/server.log
)从Unix服务器(我使用shell通道登录)上传到SFTP服务器。
源和目的地都是远程的。
是否可以使用JSch?
答案 0 :(得分:0)
SFTP协议(仅限JSch SFTP库)不支持两个远程服务器之间的传输。
如果您具有对其中一个服务器的shell访问权限,则可以尝试使用服务器上的命令行(OpenSSH)sftp
客户端来传输文件。它可行。有问题的是身份验证部分,因为它是非交互式会话。您必须使用未加密的私钥,代理转发或sshpass
。
明显而简单的实现是从" Unix"下载文件。服务器到本地机器,然后将它们上传到" SFTP"服务器。但是您需要使用SFTP通道而不是shell通道进行下载。