2014-02-03 3 views
1

Я просто пытаюсь подключиться к удаленному хосту, используя задачу ant sshexec. У меня есть необходимая банка в каталоге ant lib и вы можете подключиться к удаленному хосту с помощью шпатлевки. Это путь я бегу SSH-ANT SSHEXEC с ошибкой согласования с алгоритмом

<sshexec host="host" 
username="username" 
password="password" 
trust="yes" 
command="ls"/> 

Там, кажется, шифрование Алгоритм Построения несовпадение с сервером. Как я могу указать алгоритм, поскольку я не вижу никаких атрибутов для этой задачи [Ant doc] [1]. Это журнал ошибок, я получаю:

com.jcraft.jsch.JSchException: Algorithm negotiation fail 
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:540) 
    at com.jcraft.jsch.Session.connect(Session.java:288) 
    at com.jcraft.jsch.Session.connect(Session.java:145) 
    at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:212) 
    at org.apache.tools.ant.taskdefs.optional.ssh.SSHExec.execute(SSHExec.java:158) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
    at org.apache.tools.ant.Main.runBuild(Main.java:758) 
    at org.apache.tools.ant.Main.startAnt(Main.java:217) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 
+0

См. Http://stackoverflow.com/search?q=[jsch]+Algorithm+negotiation+fail –

+0

@ MarkO'Connor Это обрабатывается через java-программу, которая потенциально имеет возможность установить параметр алгоритма. Как я могу установить их через муравей? – Raj

+1

Похоже, что исправление применяется либо на сервере (включите алгоритмы, используемые вашей версией АОH), либо измените файлы политики, используемые вашей JVM. Я никогда не испытывал этой проблемы, но не похож на конкретную проблему ANT. –

ответ

2

TL; DR редактировать sshd_config и включить поддержку Диффи-Хеллмана-группы обменно-sha1 и Диффи-Хеллмана-group1-SHA1 в KexAlgorithms:

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 

KexAlgorithms curve25519-sha256 @ libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group14-sha1, diffie- hellman-group-exchange-sha1, diffie-hellman-group1-sha1 Я подозреваю, что проблема возникла после следующего изменения в OpenSSH 6.7: «Набор шифров и MAC-адресов по умолчанию был изменен для удаления небезопасных gorithms. ". (см. changelog). Эта версия была выпущена 6 октября и сделала это 21 октября для тестирования Debian (см. Debian changelog).

OpenSSH позволяет только следующие ключевые алгоритмы обмена по умолчанию:

[email protected] ECDH-SHA2-nistp256 ECDH-SHA2-nistp384 ECDH-SHA2-nistp521 Диффи-Хеллмана-группа -обменное-sha256 Диффи-Хеллмана-group14-sha1 в то время как JSch заявлена ​​поддержка these algorithms (см в разделе "особенности") для обмена ключами:

Диффи-Хеллмана-группа-обменно-sha1 Диффи-Хеллмана-group1- sha1 Действительно, они не могут согласиться на общий алгоритм обмена ключами. Обновление sshd_config (и перезапуск SSH-сервера) делает трюк. По-видимому, JSch должен поддерживать метод «diffie-hellman-group-exchange-sha256» с версии 0.1.50 (см. changelog).

1

У меня была такая же ошибка, как попытка подключиться к OS X 10.11.6 и могла исправить ее, заменив ~/.ant/lib/jsch-0.1.51.jar на последние ~/.ant/lib/jsch-0.1.54.jar.

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