首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JSch跳转连接到远程主机时“拒绝JSch”

通过JSch跳转连接到远程主机时“拒绝JSch”
EN

Stack Overflow用户
提问于 2018-01-23 13:34:27
回答 1查看 11.5K关注 0票数 6

需要SSH通过跳楼到达目的地主机。也曾尝试过JSch JumpHosts示例中提到的同样的方法。

代码语言:javascript
复制
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();

当连接到目标主机时,获取以下异常:

代码语言:javascript
复制
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)

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

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 13:53:15

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

唯一的问题是,本地主机密钥存储库包含第二个主机的不同主机密钥,而不是从真正的(第二个)主机接收到的主机密钥。

实际上,您似乎并不关心安全问题(),因为您为跳楼会话设置了StrictHostKeyChecking=no ( 官方例子正确地没有这样做!)。但是,对于第二个会话,您不这样做,因此出现了错误。

另见如何在使用Java库的同时解析UnknownHostKey?

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

https://stackoverflow.com/questions/48403041

复制
相关文章

相似问题

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