2016-10-21 4 views
0

Я пытаюсь использовать JSch в Java для подключения к одному из моих экземпляров EC2, но продолжаю получать сообщение об исключении «UnknownHostKey». Вот это (часть) мой код:Не удается подключиться к SSH в Java

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; 
    } 
} 

Я уже добавил свой открытый ключ в authorized_keys файл на экземпляре EC2, что я подключаюсь, и я знаю, что это работает, потому что я могу подключиться к нему используя PuTTY. Однако, как только я попал в линию с session.connect() в нем, я получаю исключение, как это:

com.jcraft.jsch.JSchException: UnknownHostKey: 10.114.2.115. RSA отпечатков пальцев ключ 63: 04: ср: 60: 4a: 1d: 47: 35: 12: 0e: 56: 4f: 5б: 0A: с9: d4

Что мне не хватает? Как я могу подключиться?

+2

Возможный дубликат [com.jcraft.jsch.JSchException: UnknownHostKey] (http://stackoverflow.com/questions/2003419/com-jcraft-jsch-jschexception-unknownhostkey) –

ответ

0

Попробуйте это:

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

Согласно this link.

+1

Я просто попробовал это, и пока он это меня немного волнует. Разве это не означает, что клиент JSch существенно обходит часть безопасности? – SoaperGEM

+0

@SoaperGEM Да, это так. Не делай этого! @tom Никогда не предлагайте никому использовать 'StrictHostKeyChecking = no', не объясняя последствий безопасности! –

+0

@MartinPrikryl Я бы предложил первый вариант в ссылке, которую я привел («Попробуйте ssh из командной строки и принять открытый ключ»), но я не знаю, как это сделать в EC2. Кто угодно? – tom

Смежные вопросы