gpt4 book ai didi

java - 使用 JSch 通过 Jumphost 连接到远程主机时为 "reject HostKey"

转载 作者:行者123 更新时间:2023-12-02 02:30:21 24 4
gpt4 key购买 nike

需要通过 Jumphost 通过 SSH 连接到目标主机。已尝试过 JSch JumpHosts example 中提到的相同内容.

Session[] sessions = new Session[2];
Session session = null;

sessions[0] = session = jsch.getSession(getUserName(), "jumphost1.com", 22);
session.setPassword(getHostPassword());
UserInfo userInfo = new UserInfo();
userInfo.setPassword(getHostPassword());
session.setUserInfo(userInfo);
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
prop.put("PreferredAuthentications", "publickey,keyboard-interactive,password");
session.setConfig(prop);
session.connect();

String host = "host1.com";
int assignedPort = session.setPortForwardingL(0, host, 22);
LOGGER.info("Jump host the {} of agent {} and port forwarding {}", i, host, assignedPort);

sessions[i] = session = jsch.getSession(getUserName(), "127.0.0.1", assignedPort);
session.setPassword(getHostPassword());
userInfo = new UserInfo();
userInfo.setPassword(getHostPassword());
session.setUserInfo(userInfo);
session.setHostKeyAlias(host);
session.connect();

连接到目标主机时出现以下异常:

Caused by: com.jcraft.jsch.JSchException: reject HostKey: 127.0.0.1
at com.jcraft.jsch.Session.checkHost(Session.java:799)
at com.jcraft.jsch.Session.connect(Session.java:345)
at com.jcraft.jsch.Session.connect(Session.java:183)

我正在尝试通过 jumphost1.com 登录主机 host1.com

  • 登录jumphost1.com
  • 然后 ssh host1.com
  • 执行host1中的命令

最佳答案

您通过 Jumphost 连接的代码是正确的。

唯一的问题是您的本地主机 key 存储库包含第二个主机的主机 key ,而不是您从真实(第二个)主机收到的主机 key 。

您实际上似乎并不关心安全性,因为您为跳转主机 session 设置了StrictHostKeyChecking=no(official example 正确地没有这样做!)。但是您没有在第二次 session 中执行相同的操作,因此会出现错误。

另请参阅How to resolve Java UnknownHostKey, while using JSch SFTP library?

关于java - 使用 JSch 通过 Jumphost 连接到远程主机时为 "reject HostKey",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com