Exceção JSch: UnknownHostKey, mesmo quando a impressão digital da chave do host está presente no arquivo known_hosts
Já existem duas perguntas sobre essa exceção:
JSchException: UnknownHostKey ecom.jcraft.jsch.JSchException: UnknownHostKeyEstou usando uma máquina Windows e tentando conectar-me a uma VM criada com o Vagrant executando o Ubuntu. Aqui está o meu código:
public static void main(String[] args) {
String host = "localhost";
String username = "vagrant";
int port = 2200;
String privateKey = "C:\\keys\\openSSH_pair1\\open_ssh_private";
JSch js = new JSch();
try {
js.addIdentity(privateKey, "pass");
js.setKnownHosts("C:\\Users\\user\\.ssh\\known_hosts");
Session session = js.getSession(username, host, port);
session.connect();
System.out.println("Connected");
} catch (JSchException e) {
e.printStackTrace();
}
}
@Pascal sugere configuraçãostrictHostKeyChecking
parano
, o que funciona para mim, mas essa não é a solução preferida. Sua solução preferida é SSH a partir da linha de comando, para que o host seja adicionado aoknown_hosts
Arquivo. Eu tenho o Git instalado e executadossh -i openSSH_pair1\open_ssh_private vagrant@localhost -p 2200
e recebeu essa saída antes de ser solicitada a frase secreta e estabelecer uma conexão
A autenticidade do host '[localhost]: 2200 ([127.0.0.1]: 2200)' não pode ser estabelecida. A impressão digital da chave ECDSA é 11: 5d: 55: 29: 8a: 77: d8: 08: b4: 00: 9b: a3: 61: 93: fe: e5. Tem certeza de que deseja continuar se conectando (sim / não)? sim Aviso: Adicionado permanentemente '[localhost]: 2200' (ECDSA) à lista de hosts conhecidos.
Então agora meuknown_hosts
arquivo emgit_home\.ssh
contém uma entrada paralocalhost:2200
, Eu também coloquei oknown_hosts
arquivo emuser_home\.ssh
. Também coloquei minha chave privada na VM na qual estou tentando fazer o ssh e executei isso para gerar uma chave pública e adicioná-la ao diretórioauthorized_keys
ssh-keygen -y -f open_ssh_private > open_ssh_gen.pub
cat open_ssh_gen.pub >> ~/.ssh/authorized_keys
No entanto, eu ainda recebo essa exceção
com.jcraft.jsch.JSchException: UnknownHostKey: localhost. RSA key fingerprint is 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
at com.jcraft.jsch.Session.checkHost(Session.java:797)
at com.jcraft.jsch.Session.connect(Session.java:342)
at com.jcraft.jsch.Session.connect(Session.java:183)
at connect.Main.main(Main.java:24)
A resposta para a outra pergunta sugere adicionar o abaixo, que também não funciona para mim
js.setKnownHosts("C:\\Users\\user\\.ssh\\known_hosts");