Tag: jsch

使用jsch将远程服务器中的目录移动到同一远程服务器中的另一个位置

我正在使用JSCH API通过sftp连接到远程服务器。 我需要将远程服务器中存在的目录从位置A移动到位置B.看起来方法channelsftp.put(src,dest)只允许移动文件而不是目录。 有人可以解释一下如何做到这一点?

JSch get()因NullPointerException而失败

我有一个Jax-RS服务器,它应该保存一个可以通过ssh访问的文件列表,然后我可以通过HTTP下载或流式传输。 我一直在尝试用JSch的SFTP通道读取文件,但我一直收到NullPointerException 。 这是我写的MessageBodyWriter : @Provider @Produces(“video/*”) public class MediaBodyWriter implements MessageBodyWriter { @Override public long getSize(MediaFile mFile, Class arg1, Type arg2, Annotation[] arg3, MediaType arg4) { return mFile.getFileSize(); } @Override public boolean isWriteable(Class type, Type arg1, Annotation[] arg2, MediaType arg3) { return type.equals(MediaFile.class); } @Override public void writeTo(MediaFile mFile, Class type, Type genericType, Annotation[] […]

Jsch – 一个会话多个频道

我设法通过ssh用Jsch执行单个命令但是当我尝试执行第二个命令时它失败了 为了调试我把这个问题归结为这样: import java.io.IOException; import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; public class Exec { public static void test(Session session) throws Exception { Channel channel = session.openChannel(“exec”); ((ChannelExec) channel).setCommand(“pwd”); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); InputStream in = channel.getInputStream(); channel.connect(); byte[] tmp = new byte[1024]; while (true) { while (in.available() > 0) { […]

无法使用JSch和Java 8的密钥文件连接到SFP服务器

我正在尝试使用2048位RSA密钥文件连接到SFTP服务器。 它可以使用JSch在JRE版本7r45上运行良好,但是在针对JRE的版本8r31运行时,我得到了以下exception。 com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 2048 (inclusive). 这不是一个有限的Java安全策略的问题,因为我已经尝试过,无论两个版本的java都有无限制的强度jar。 我已经看到对此exception的其他引用建议用BouncyCastle替换默认的Java JCE提供程序,但为什么java 7和java 8之间会有区别? 我通过运行Security.addProvider(new BouncyCastleProvider());尝试这个Security.addProvider(new BouncyCastleProvider()); 在程序启动但它似乎没有任何区别。

SFTP读取目录中的所有文件

我使用SFTP com.jcraft.jsch创建了一个成功的连接 我还在HostDir下创建了一个目录文件夹,如: channelSftp.mkdir(“sftp.test”); 现在我想读取主机目录下的所有文件/文件夹名称,我没有看到任何适当的方法或示例。 谢谢

如何使用Java JSch库逐行读取远程文件?

我正在尝试使用Java逐行读取文件,这非常简单(在stackoverflow.com上有多个解决方案),但需要注意的是该文件位于远程服务器上,而不是可以获得本地副本(它是单个.txt文件中数百万亚马逊评论的大量集合)。 JSch附带了两个示例类,用于将文件复制到远程主机或从远程主机复制文件,即ScpTo和ScpFrom。 我有兴趣逐行从远程主机读取文件; ScpFrom会尝试将整个内容复制到本地文件中,这需要很长时间。 以下是ScpFrom的链接: http : //www.jcraft.com/jsch/examples/ScpFrom.java.html 我会尝试将代码存放在那里,然后修改它以逐行读取远程文件而不是写入本地文件,但是一旦作者声明了一个字节数组并开始从中读取字节,大部分代码都是希腊语。远程文件。 我承认这是我几乎不了解的事情; BufferedReader提供了更高级别的接口。 基本上我想这样做: 如何使用Java逐行读取大型文本文件? 除了使用BufferReader,它还可以逐行读取远程文件,如果提供了主机名和用户凭据(密码等),即RemoteBufferReader? 这是我写的测试代码; 如何使用JSCh逐行读取远程文件? public class test2 { static String user = “myusername”; static String host = “user@remotehost”; static String password = “mypasswd”; static String rfile = “/path/to/remote/file/on/remote/host”; public static void main(String[] args) throws FileNotFoundException, IOException, JSchException { JSch jsch=new JSch(); Session session=jsch.getSession(user, […]

在jgit中配置known_hosts

使用带有gitolite的jgit进行源代码控制,我有一个应用程序可以在命令中生成某些代码,我们希望将其提交给源代码控制。 目标是快速前进,提交新代码,然后推送它。 我有以下方法: private void commitToGitRepository(String updateComment, Config config) throws IOException, NoFilepatternException, GitAPIException { if(git == null) { git = Git.open(new File(config.getDpuCheckoutDir())); } PullCommand pull = git.pull(); pull.call(); } 此方法在pull.call()方法调用上失败,但有以下exception: com.jcraft.jsch.JSchException: UnknownHostKey: www.somehost.com. RSA key fingerprint is 9d:92:a9:c5:5d:cb:5f:dc:57:ff:38:7e:34:31:fe:75 at com.jcraft.jsch.Session.checkHost(Session.java:748) at com.jcraft.jsch.Session.connect(Session.java:319) at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116) at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121) at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.(TransportGitSsh.java:248) at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147) at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136) at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122) at […]

签名长度不正确:得到127但是期待128

java 1.8升级后我遇到了一个奇怪的问题。 我在我们的一个实用程序中使用jsch-0.1.54.jar从各个地方下载文件。 这个特殊的实用程序使用了将近4 – 5年没有任何问题(当时jsch-0.1.48)。 那时环境是java 1.6。 最近我们升级到java 1.8,结果我们升级了这个特定的实用程序。 现在我们遇到一个奇怪的问题,它偶尔会发生,大多数时候文件的下载都是完美的。 错误日志 INFO: SSH_MSG_KEXDH_INIT sent INFO: expecting SSH_MSG_KEXDH_REPLY INFO: Disconnecting from SRV2000 port 22 2016-10-28 08:42:18:0576 ERROR [main] net.AerisAbstractMethod – Failed to open connection com.jcraft.jsch.JSchException: Session.connect: java.security.SignatureException: Signature length not correct: got 127 but was expecting 128 at com.jcraft.jsch.Session.connect(Session.java:565) at com.jcraft.jsch.Session.connect(Session.java:183) at com.aeris.net.AerisSFTPMethod.connectToServer(AerisSFTPMethod.java:65) at com.aeris.net.AerisAbstractMethod.getListOfFiles(AerisAbstractMethod.java:143) […]

jsch ChannelExec和ChannelShell之间的确切区别是什么?

有人能告诉我ChannelExec和ChannelShell之间的区别吗?

SFTP通过JSch抛出错误4:失败

在尝试SFTP文件从Windows到Unix服务器时,我遇到了一个特殊的问题。 错误“堆栈跟踪”是 – 4: Failure at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846) at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:2459) at com.jcraft.jsch.ChannelSftp._sendCLOSE(ChannelSftp.java:2465) at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:683) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365) 我在其他论坛上搜索了很多,但无法找到根本原因。 我还观察了一件事 – 文件名,我正在尝试SFTP,当我将其更改为* .XML时,它是* .xml,SFTP是“成功的”。 非常奇怪无法确定问题。 我正在尝试使用JSch Java API。 但是我在尝试WinSCP前端时遇到了同样的问题。