scp来自java

Llo*_*olz 78 java scp bouncycastle jsse jsch

通过Java编程语言执行scp传输的最佳方法是什么?我似乎可以通过JSSE,JSch或充气城堡java库来执行此操作.这些解决方案似乎都没有一个简单的答案.

Tim*_*and 55

我最终使用了Jsch - 它非常简单,似乎扩展得非常好(我每隔几分钟就抓取几千个文件).

  • @LloydMeinholz:我为这个库写了[Javadocs](http://epaul.github.com/jsch-documentation/simple.javadoc/). (29认同)
  • 我发现这个页面非常有用:http://www.jcraft.com/jsch/examples/ (3认同)
  • jsch 被证明是更好的选择,但文档很糟糕。Abarax 关于查看 ants scp 任务的提示非常有帮助。目前还不清楚该项目是否仍然非常活跃。谢谢你的提示。 (2认同)

shi*_*har 20

插件:sshj是唯一理智的选择!请参阅以下示例开始:下载,上传.

  • 只有理智的选择? (5认同)
  • 我使用sshj而不是Jsch,因为它的界面要简单得多。 (2认同)
  • 真是浪费我的时间。示例不显示使用的参数。不同的远程用户名文档是不存在的。人们避免这个建议。 (2认同)

aba*_*rax 16

看看这里

这是蚂蚁SCP任务的源代码."执行"方法中的代码是它的基本内容.这应该让您对所需要的内容有一个全面的了解.它使用JSch我相信.

或者,您也可以从Java代码直接执行此Ant任务.


Wil*_*ill 6

我用一些实用方法包装了Jsch,使它更友好并称之为它

Jscp

可在此处获取:https://github.com/willwarren/jscp

SCP实用程序tar一个文件夹,压缩它,并将其scp到某处,然后解压缩它.

用法:

// create secure context
SecureContext context = new SecureContext("userName", "localhost");

// set optional security configurations.
context.setTrustAllHosts(true);
context.setPrivateKeyFile(new File("private/key"));

// Console requires JDK 1.7
// System.out.println("enter password:");
// context.setPassword(System.console().readPassword());

Jscp.exec(context, 
           "src/dir",
           "destination/path",
           // regex ignore list 
           Arrays.asList("logs/log[0-9]*.txt",
           "backups") 
           );
Run Code Online (Sandbox Code Playgroud)

还包括有用的类 - Scp和Exec,以及TarAndGzip,它们的工作方式几乎相同.


Fer*_*tos 5

这是高级解决方案,无需重新发明。又快又脏!

1)首先,转到http://ant.apache.org/bindownload.cgi并下载最新的Apache Ant二进制文件。(如今,apache-ant-1.9.4-bin.zip)。

2)解压缩下载的文件并找到JAR ant-jsch.jar(“ apache-ant-1.9.4 / lib / ant-jsch.jar”)。在您的项目中添加此JAR。也是ant-launcher.jar和ant.jar。

3)转到Jcraft jsch SouceForge项目并下载jar。如今, jsch-0.1.52.jar。还要在您的项目中添加此JAR

现在,您可以轻松地在Java代码中使用Ant类Scp来通过网络复制文件或 SSHExec用于SSH服务器中的命令,轻松地用于。

4)代码示例Scp:

// This make scp copy of 
// one local file to remote dir

org.apache.tools.ant.taskdefs.optional.ssh.Scp scp = new Scp();
int portSSH = 22;
String srvrSSH = "ssh.your.domain";
String userSSH = "anyuser"; 
String pswdSSH = new String ( jPasswordField1.getPassword() );
String localFile = "C:\\localfile.txt";
String remoteDir = "/uploads/";

scp.setPort( portSSH );
scp.setLocalFile( localFile );
scp.setTodir( userSSH + ":" + pswdSSH + "@" + srvrSSH + ":" + remoteDir );
scp.setProject( new Project() );
scp.setTrust( true );
scp.execute();
Run Code Online (Sandbox Code Playgroud)