jsch连接不上,异常提示:UnknownHostKey: 127.0.0.1. RSA key fingerprint is xxx

今天在编写一个图片上传工具时,用到了JSch工具,按照官网的demo编写连接测试,但是一直连接不上,异常提示:

UnknownHostKey: 127.0.0.1. RSA key fingerprint is xxx

测试代码如下

public static void main(String[] args) {
		JSch jsch = new JSch();
		try {
			Session session = jsch.getSession("ajie", "127.0.0.1", 22);
			if (null == session) {
				System.out.println("session打开失败 ,session为空");
			}
			session.setPassword("123456");
			session.connect(30000);
			System.out.println("连接成功");
		} catch (JSchException e) {
			e.printStackTrace();
		}
	}

出现上面的异常是因为ssh连接的时候发现known_hosts文件没有改指纹,如果你在控制台连接过ssh就知道,如果第一次连接,会提示将连接主机加入到known_hosts中,但是在代码中无法提示用户选择yes/no,所以抛异常。

在谷歌找了一些解决方法,大概有两种,但是第一种在我这里并不能解决,不过也记录一下

1. 给jsch指定known_host文件

JSch jsch = new JSch();
jsch.setKnownHosts("c:/user/ajie/.ssh/known_hosts");

2. 设置第一次登陆的时候提示,可选值:(ask | yes | no)
 

session.setConfig("StrictHostKeyChecking", "no");

我是设置no,不提示

设置后代码

public static void main(String[] args) {
		JSch jsch = new JSch();
		try {
			Session session = jsch.getSession("ajie", "127.0.0.1", 22);
			if (null == session) {
				System.out.println("session打开失败 ,session为空");
			}
            session.setConfig("StrictHostKeyChecking", "no");
			session.setPassword("123456");
			session.connect(30000);
			System.out.println("连接成功");
		} catch (JSchException e) {
			e.printStackTrace();
		}
	}

运行,控制台打印“连接成功”

你可能感兴趣的:(jsch连接不上,异常提示:UnknownHostKey: 127.0.0.1. RSA key fingerprint is xxx)