首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用java连接到SFTP

使用java连接到SFTP
EN

Stack Overflow用户
提问于 2011-06-09 17:19:58
回答 6查看 40K关注 0票数 1

我需要连接到SFTP服务器的帮助?有没有人有可用的代码?

我找到了像这样的东西

代码语言:javascript
复制
package test.JSch;

import com.jcraft.jsch.*;

public class TestJSch {
public static void main(String args[]) {
    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("USSERNAME", "HOST", 22);
        //session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("PASSWORD");
        System.out.println("1");
        session.connect();
        System.out.println("2");

        Channel channel = session.openChannel("sftp");
        System.out.println("3");
        channel.connect();
        System.out.println("4");
        ChannelSftp sftpChannel = (ChannelSftp) channel;
        sftpChannel.get("remotefile.txt", "localfile.txt");
        sftpChannel.exit();
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (SftpException e) {
        e.printStackTrace();
    }
    }
}

但这是输出

代码语言:javascript
复制
com.jcraft.jsch.JSchException: java.net.ConnectException: Connection timed out: connect
    at com.jcraft.jsch.Util.createSocket(Util.java:258)
    at com.jcraft.jsch.Session.connect(Session.java:186)
    at com.jcraft.jsch.Session.connect(Session.java:145)
    at test.JSch.TestJSch.main(TestJSch.java:17)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at com.jcraft.jsch.Util.createSocket(Util.java:252)
    ... 3 more

这段代码有什么问题?

EN

回答 6

Stack Overflow用户

发布于 2013-12-17 01:13:23

您可以尝试在Jsch Framework上增加超时。

代码语言:javascript
复制
session.connect(int Timeout)

session.connect(30000);

有关Jcsh javadoc的更多信息

票数 2
EN

Stack Overflow用户

发布于 2011-06-09 17:21:57

这是一个关于Stackoverflow的早期问题,对于这个问题,公认的答案是使用JSch library

How to retrieve a file from a server via SFTP?

我看到您尝试通过JSch连接,但得到了一个错误。

我建议首先检查您是否可以从客户端(测试程序的同一台计算机)连接到sftp机器,使用标准的sftp客户端(如Windows上的Filezilla ),或者在*nix系统中的终端上使用sftp命令。

票数 1
EN

Stack Overflow用户

发布于 2011-06-09 17:22:56

我已经成功地使用了JSch library。它有臭名昭著的糟糕文档,但传言它将非常严格和有效地实现其SSH功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6290613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档