java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
我正在使用上面的片段连接到一台没有键盘交互式身份验证的远程机器。
但当我尝试使用键盘交互式密码连接到服务器时,我会收到com.jcraft.jsch.JSchException: Auth fail
异常。
我添加了这些配置并进行了测试,但没有成功。
config.put("PreferredAuthentications", "password");
和
config.put("PreferredAuthentications",
"keyboard-interactive,password");
试试这个。
JSch jSch;
try {
Properties properties = new Properties();
properties.put("PreferredAuthentications", "publickey,keyboard-interactive,password");
properties.put("StrictHostKeyChecking", "no");
properties.put("UseDNS", "no");
jSch = new JSch();
Session session = jSch.getSession("username", "host/ip", 22);
session.setConfig(properties);
session.setTimeout(10 * 1_000);
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("shell");
channel.connect();
} catch (Exception e) {
e.printStackTrace();
} finally {
channel.disconnect();
session.disconnect();
}
如果您想使用键盘交互式密码验证进行连接
使用config.put("PreferredAuthentications"、"keyboard interactive"(;
如果你想使用密码提示连接密码验证
使用config.put("PreferredAuthentications"、"password"(;