当前位置: 首页 > 面试题库 >

使用JSch连接到SFTP时如何选择网络接口

巢烨
2023-03-14
问题内容

我在通过JSch创建到远程SFTP服务器的会话时遇到问题:

我用来通过外壳连接sftp服务器的命令是:

sftp -o BindAddress=SOME_IP_ADDRRESS myUserName@HOST_IP_ADDR

及其正常工作,但是当我尝试使用Java(JSch)时,我遇到了超时异常。Java代码是

/* KEY_FILE_NAME = is a file with rsa public key */
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(KEY_FILE_NAME).getFile());
JSch jsch = new JSch();
jsch.addIdentity(file.getAbsolutePath());
Properties hash = new Properties();
hash.put("StrictHostKeyChecking", "no");
logger.debug("SSh Server Host name >>" + SSH_SERVER_HOST_NAME + " || User Name >>" +  SSH_SERVER_USER_NAME);

session = jsch.getSession(SSH_SERVER_USER_NAME, SSH_SERVER_HOST_NAME);
UserInfo ui = new MyUserInfo();
session.setUserInfo(ui);
session.setConfig(hash);
session.setPort(22);
session.setTimeout(45000);
session.connect();

我得到的异常是:

com.jcraft.jsch.JSchException:超时:未建立套接

我想它来了,因为我没有在使用shell命令时设置我正在使用的BindAddresswith -o选项。如果是这样,那么如何-o BindAddress在JSch中设置参数?还是我做错了,请提出建议。


问题答案:

我认为在JSch中没有明确支持选择要从中进行连接的网络接口。

但是您可以实现一个SocketFactory接口,例如它Socket使用带有的构造函数重载localAddr来创建实例:

public Socket(InetAddress address, int port, InetAddress localAddr, int localPort)

(将0用作localPort

然后Session.setSocketFactory()在致电之前将工厂传递给connect(),您应该会很好。



 类似资料:
  • 我对AmazonEC2和Filezilla是完全陌生的。当我尝试连接到服务器时,收到一条错误消息:“错误:网络错误:连接被拒绝” 问题是,我无法获得关于如何将Filezilla与AmazonEC2结合使用的完整教程。我尝试按照本文中的步骤操作:使用Filezilla和SFTP连接到AmazonEC2文件目录,但它仍然不起作用。 到目前为止我所做的: 我在实例的安全组中添加以下端口: 菲利齐拉: 问

  • 我使用的是camel version2.13.1和camel-ftp version2.13.1。我正试图通过camel路由连接到sftp服务器。我得到了一些与jCraft Jsch异常相关的错误,如下所示。

  • 我要连接的代码: 命令行版本的相同的程序,我可以运行没有任何例外!另一个来自JCraft[link]http://www.jcraft.com/jsch/examples/SFTP.java.html网站的SFTP示例运行良好。

  • 几天前我租了一个VPS,和它乱搞了一段时间。有一件事我真的很纠结:获得一个简单的文件交换系统,最终我想要建立的网站。理想情况下,我只想在我的MacBook上有一个文件夹,我可以用Aptana Studio3(我真的很喜欢他们的IDE)与Linux服务器(最好是/var/www/)上的一个相同的文件夹直接链接。 到目前为止,我的主要问题是我无法(通过Aptana或其他文件系统,如FileZilla)

  • 问题内容: 我正在使用Boto 3 python库,并想连接到AWS CloudFront。我需要指定正确的AWS Profile(AWS凭证),但是在查看官方文档时,我看不到指定它的方法。 我正在使用代码初始化客户端: 但是,这导致它使用默认配置文件进行连接。我找不到可以指定要使用的配置文件的方法。 问题答案: 我认为文档在公开如何执行此操作方面并不出色。一段时间以来,它一直是受支持的功能,并且