【问题标题】:How to configure multiple remote session using Jsch如何使用 Jsch 配置多个远程会话
【发布时间】:2021-08-23 23:26:24
【问题描述】:

在我的应用程序中,我对 2 个不同的远程服务器有 2 个要求:

  1. 我必须将文件从 localhost 复制到远程服务器 X
  2. 从远程服务器 Y 复制一个不同的文件到本地主机

我知道 Jsch 可以像下面这样使用:

JSch jsch = new JSch();

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
jsch.addIdentity(privateKey, privateKeyPassphrase);
Session session = jsch.getSession(user, host, port);
session.setConfig(config);
session.connect(5000);

使用上面的代码,我可以为单个主机连接一个会话。如何将不同的会话连接到不同的主机(在我的情况下是 x 和 y)?

无论我是复制到远程主机还是从远程主机复制,我都需要私钥还是公钥?

问候

【问题讨论】:

  • 您永远不应该拥有任何其他系统的私钥。您通常应该在您的 KnownHosts 文件中拥有所有主机的 public 密钥,但是由于您已将 StrictHostKeyChecking 设置为 no,因此没有它就可以通过。 (当然,您可能会连接到假主机并获取伪造数据或将您的真实数据提供给骗子。)由于您使用密钥对来验证自己的身份,因此必须在两台主机上分别配置该密钥对的公共部分。
  • 用不同的host重复你的代码???您基本上是在问这样一个问题,“我有一个要添加 1 + 2 的代码,但现在我还想添加 2 + 3 – 我该怎么做?”
  • @MartinPrikryl 好的,我想有一个地方可以配置所有远程连接。无论如何谢谢

标签: java sftp jsch file-copying


【解决方案1】:

您必须与服务器 X 和服务器 Y 建立连接(会话)。使用 JSch,您可以在会话中读取和写入。

【讨论】:

  • 这就是我要问的,我知道如何与单个远程服务器创建会话。如何创建/使用多个 JSCH 会话
  • 使用以下内容。会话 session1 = jsch.getSession(user1, host1, port1); session1.setConfig(config1); session1.connect(5000);会话 session2 = jsch.getSession(user2, host2, port2); session2.setConfig(config2); session2.connect(5000);
猜你喜欢
  • 2014-10-20
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2017-02-15
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多