无法使用Java连接到SSH

时间:2016-10-21 23:37:27

标签: java ssh amazon-ec2 jsch

我正在尝试使用Java中的JSch连接到我的一个EC2实例,但不断收到“UnknownHostKey”异常消息。这是(我的代码)的一部分:

import com.jcraft.jsch.*;
import java.io.*;

public class JSchTest {

    private String serverIp;

    public void testSshConnection() {

        try {

            JSch jsch = new JSch();
            jsch.addIdentity("C:\\Users\\Administrator\\.ssh\\id_rsa");

            Session session = jsch.getSession("ec2-user", serverIp, 22);
            session.connect(30000); // <-- this is where the exception is thrown

            ChannelExec channel = (ChannelExec)session.openChannel("shell");

            // more code here...

            channel.disconnect();
            session.disconnect();

        } catch (JSchException|IOException ex) {
            ex.printStackTrace();
        }
    }

    public void setServerIp(String serverIp) {
        this.serverIp = serverIp;
    }
}

我已经将我的公钥添加到我正在连接的EC2实例上的authorized_keys文件中,我知道它有效,因为我可以使用PuTTY连接到它。但是,当我点击其中session.connect()的行时,我会得到一个例外:

  

com.jcraft.jsch.JSchException:UnknownHostKey:10.114.2.115。 RSA密钥指纹为63:04:cf:60:4a:1d:47:35:12:0e:56:4f:5b:0a:c9:d4

我错过了什么?我怎样才能将其连接起来?

1 个答案:

答案 0 :(得分:0)

试试这个:

java.util.Properties config = new java.util.Properties(); 
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

根据this link