2011-09-22 178 views
0

我正在编写一个JAVA程序,用于在某些时候需要将文件从正在运行的计算机上的文件传输到另一台计算机上的工作。要求是这样的,它可以配置为通过FTP,SFTP进行传输,或者在身份验证安全但数据未加密传输的情况下进行传输。试图通过SSH做FTP隧道

使用第三方JAVA库实现前两个不应该太糟糕。我遇到的问题是第三种选择。似乎唯一的方法就是通过SSH隧道传输FTP。

由于我在这件事上相当缺乏经验,想知道是否有人有任何有用的建议。这可以通过使用可靠的JAVA库(首选)或我刚刚在程序内调用的一个单独进程来完成。

感谢

回答

1

您可以使用Apache Commons VFS文件上传和下载。有FTPFTPS。唯一的先决条件是您的远程系统必须运行FTP服务器。你不必调用一些外部过程。只要让你自己的应用程序做这项工作。请记住要小心防火墙。

对于FTPS,只有控制会话保证被加密。数据通过常规FTP传输。它是否加密取决于您。您可以使用PROT和CDC命令来控制加密。

+0

感谢您的回复。我已经看过Apache Commons,你可能是对的,它可以做我想做的事情。但是,它似乎只支持您提到的FTP和FTPS。 FTP是完全未加密的,而FTPS已加密认证和数据传输。我需要的是一个中间解决方案,其中身份验证是加密的,但在那之后,实际的数据传输对于这一个会话都是未加密的。我想知道Apache Commons本身是否提供这种功能,或者如果我必须做些额外的或其他的事情来实现这一点。 – Anonymous

+0

我刚刚更新了答案。 –