Работа с «[HOST_KEY_NOT_VERIFIABLE] Не удалось проверить ключ хоста` ssh-rsa` по отпечатку пальца "в sshj - PullRequest
12 голосов
/ 24 октября 2011

У меня странная проблема с sshj (я использую sshj v0.6.0), для которой мне понадобится помощь кого-то.Аутентификация с открытым ключом работает нормально на некоторых машинах, но не работает на других машинах, и я вижу ошибку ниже.

Единственное различие, которое я мог разглядеть, было то, что рассматриваемый идентификатор UNIX viz coonradt, кажется, имеетниже перечислены настройки конфигурации в ~ / .ssh / config только на поле, на котором запускаются нижеуказанные ошибки

Host *
    Protocol 1,2
    FallBackToRsh no
    ForwardAgent yes
    ForwardX11 yes
    PasswordAuthentication yes
    RhostsAuthentication no
    RhostsRSAAuthentication no
    RSAAuthentication yes
    NoHostAuthenticationForLocalhost yes
    StrictHostKeyChecking no
  KeepAlive yes

Из приведенного выше конфигурационного файла я узнал, что рассматриваемый идентификатор должен использоватьПротокол 1,2, и я подозреваю, что это может быть связано с моими сбоями (я не очень уверен в этом, но это всего лишь догадка)

Для всех других идентификаторов UNIX, для которых это работает нормально,У меня нет такого файла конфигурации.

PS: я не могу изменить конфигурацию UNIX ID "coonradt", так как этот идентификатор используется центральными серверами Hudson.

Был бы признателен, если кто-тоНе могли бы вы помочь мне подсказать, что может быть здесь не так

Вот ошибка, которую я вижу:

Oct 24, 2011 2:30:37 AM net.schmizz.sshj.DefaultConfig initCipherFactories
WARNING: Disabling high-strength ciphers: cipher strengths apparently limited by JCE policy
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl init
INFO: Client identity string: SSH-2.0-SSHJ_0_6_0
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl init
INFO: Server identity string: SSH-1.99-OpenSSH_4.3
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.KeyExchanger sendKexInit
INFO: Sending SSH_MSG_KEXINIT
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.KeyExchanger handle
INFO: Received SSH_MSG_KEXINIT
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.kex.AbstractDHG init
INFO: Sending SSH_MSG_KEXDH_INIT
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.KeyExchanger handle
INFO: Received kex followup data
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.kex.AbstractDHG next
INFO: Received SSH_MSG_KEXDH_REPLY
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl die
SEVERE: Dying because - net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] Could not verify `ssh-rsa` host key with fingerprint `ca:0b:b3:7f:53:5a:e3:bc:bf:44:63:d8:2d:26:c0:41` for `mymachine.domain.com` on port 22
Oct 24, 2011 2:30:38 AM net.schmizz.concurrent.Promise tryRetrieve
SEVERE: <<kex done>> woke to: net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] Could not verify `ssh-rsa` host key with fingerprint `ca:0b:b3:7f:53:5a:e3:bc:bf:44:63:d8:2d:26:c0:41` for `mymachine.domain.com` on port 22
Oct 24, 2011 2:30:38 AM net.schmizz.sshj.transport.TransportImpl setService
INFO: Setting active service to null-service
Oct 24, 2011 2:30:38 AM com.test.jaws.execution.ssh.impl.SSHJClientImpl$ExceptionHandler handleSevereCondition
SEVERE: mymachine.domain.com is not added to your /x/home/coonradt/.ssh/known_hosts file. 
Throwable occurred: net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] Could not verify `ssh-rsa` host key with fingerprint `ca:0b:b3:7f:53:5a:e3:bc:bf:44:63:d8:2d:26:c0:41` for `mymachine.domain.com` on port 22
    at net.schmizz.sshj.transport.KeyExchanger.verifyHost(KeyExchanger.java:222)
    at net.schmizz.sshj.transport.KeyExchanger.handle(KeyExchanger.java:373)
    at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:477)
    at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
    at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
    at net.schmizz.sshj.transport.Reader.run(Reader.java:72)

Ответы [ 4 ]

20 голосов
/ 19 декабря 2017

Вы можете настроить SSH-клиент на прием всех ключей без проверки (игнорирует проверку ключа хоста)

SSHClient sshClient = new SSHClient();
sshClient.addHostKeyVerifier(new PromiscuousVerifier());
...
14 голосов
/ 24 октября 2011

Как насчет добавления HostKeyVerifier для этой машины?

sshClient.addHostKeyVerifier("ca:0b:b3:7f:53:5a:e3:bc:bf:44:63:d8:2d:26:c0:41");

Причина, по которой это не происходит автоматически, возможно, состоит в том, что файл known_hosts не находится в $ (user.home) /. Ssh / known_hosts,Вы также можете явно загрузить известные хосты из определенного места.

sshClient.loadKnownHosts(new File("path_to_known_hosts"));
7 голосов
/ 20 марта 2016
try {
    ssh.connect(envConf.getIp(), port);
} catch (TransportException e) {
    if (e.getDisconnectReason() == DisconnectReason.HOST_KEY_NOT_VERIFIABLE) {
        String msg = e.getMessage();
        String[] split = msg.split("`");
        String vc = split[3];
        ssh = new SSHClient();
        ssh.addHostKeyVerifier(vc);
        ssh.connect(envConf.getIp(), port);
    } else {
        throw e;
    }
}
ssh.authPassword(envConf.getName(), envConf.getPw());
ssh.newSCPFileTransfer().download(envConf.getHomePath() + FilePath, toPath);
0 голосов
/ 25 марта 2014

Для альтернативного ответа убедитесь, что имя хоста, к которому вы пытаетесь подключиться, в точности совпадает с вашим файлом known_hosts. Пример ошибки, которую я делал, пытался подключиться к полному URL bob.insidenetwork.pvt, но мой файл known_hosts содержал только bob в качестве записи, потому что, когда я ssh вручную, я слишком ленив, чтобы набрать весь URL .. .

...