"reject HostKey" 当使用 JSch 通过 jumphost 连接到远程主机时
"reject HostKey" when connecting to remote host through jumphost with JSch
需要通过 jumphost 连接到目标主机。曾尝试过 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 连接的代码是正确的。
唯一的问题是您的本地主机密钥存储库包含第二台主机的主机密钥,与您从真实(第二台)主机收到的主机密钥不同。
当您为跳转主机会话设置 StrictHostKeyChecking=no
时,您实际上似乎 不关心安全性 (official example 正确地不做! ).但是你没有为第二个会话做同样的事情,因此错误。
另见
需要通过 jumphost 连接到目标主机。曾尝试过 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 连接的代码是正确的。
唯一的问题是您的本地主机密钥存储库包含第二台主机的主机密钥,与您从真实(第二台)主机收到的主机密钥不同。
当您为跳转主机会话设置 StrictHostKeyChecking=no
时,您实际上似乎 不关心安全性 (official example 正确地不做! ).但是你没有为第二个会话做同样的事情,因此错误。
另见